调用jQuery插件时获取DOM(selector)元素

时间:2018-02-27 11:06:40

标签: jquery jquery-selectors

如何从插件调用本身访问插件调用的实际元素? $(this)似乎是指插件上下文而不是实际元素。

例如,我在输入字段上调用pluginName插件,我想要一个回调来更改该输入的值。这是一个通用的例子。元素可以是标签,类,id等。

$('element').pluginName({
    option: true,
    option: false,
    onSelect: function(item){
        $(this).val('something');
        //console.log($(this));
    }
});

2 个答案:

答案 0 :(得分:1)

this事件中onSelect的上下文将取决于库的结构,以及如何对该事件处理程序进行内部调用。理想的解决方案是将onSelect处理程序的范围设置为元素本身,或者至少将其作为参数提供给处理程序。

如果这不可能,并且您希望保留对#input元素的引用,则可以再次选择它,因为只应该有一个元素的单个实例id

onSelect: function(item){
  $('#input').val('something');
}

如果您使用类来选择多个元素,那么您需要循环遍历它们:

$('.input').each(function() {
  var $el = $(this);
  $el.pluginName({
    option: true,
    option: false,
    onSelect: function(item) { 
      $el.val('something');
    }
  });
});

答案 1 :(得分:1)

如果你的插件不允许,没有直接的方法。你可以做的一件事是

var $el = $('#input');

$el.pluginName({
    option: true,
    option: false,
    onSelect: function(item){
        $el.val('something');
    }
});