首页 > 解决方案 > 如何在插件配置期间访问 $(this) 元素以使用 jQuery 获取 data() 属性?

问题描述

我正在尝试为 bootstrap-datetimepicker配置小部件定位,以便它根据我在data-vertical-position元素中设置的任何值打开。

例如,如果我有以下 html

<div class='input-group date' id='datetimepicker2' data-vertical-position="top">

我希望菜单在顶部打开而不是“自动”

通常人们会像这样改变小部件的打开位置

$('.from').datetimepicker({
      widgetPositioning: {
          horizontal: 'auto',
          vertical: 'top'
      }
});

但是,我想$(this)在配置期间访问对象,以便检查元素是否具有data-vertical-position我应该设置的值。所以我想这样做

$('.from').datetimepicker({
      widgetPositioning: {
          horizontal: $(this).data('horizontal-position') || 'auto',
          vertical: $(this).data('vertical-position') || 'auto'
      }
});

但是,这是行不通的。$(this).data('horizontal-position')似乎一直为空,将位置设置为默认值auto

标签: javascriptjquerybootstrap-datetimepicker

解决方案


如果插件不支持这种类型的设置,您可以手动进行

$('.from').each(function() {
  var from = $(this);

  from.datetimepicker({
    widgetPositioning: {
      horizontal: from.data('horizontal-position') || 'auto',
      vertical: from.data('vertical-position') || 'auto'
    }
  })
});

推荐阅读