插件调用中的jQuery $(this)选择器

时间:2015-10-21 21:50:16

标签: jquery

我目前正在整合一个名为RangeSlider JS的jQuery插件。

这是我触发插件的功能:

$('input[type="range"]').rangeslider({
    param: true, 
    param2: false,

    onInit: function() {    
        if ($(this).attr('name') === 'someName') {
            // do something ... 
        },
    }
});

现在,因为我有多个输入类型"范围"我正在使用插件,我需要区分每个输入。我试图通过获取输入"" name"属性,但似乎$(this)在该函数中不起作用。

如何让$(this)选择器工作? $(this)应该引用input[type="range"]

2 个答案:

答案 0 :(得分:3)

我必须查看actual JS source code for that plugin以了解如何调用onInit(),但看起来,this设置为rangelider Plugin对象。并且,this.$element将为您提供当前元素的jQuery对象。

所以,你应该能够做到这一点:

$('input[type="range"]').rangeslider({
    param: true, 
    param2: false,

    onInit: function() {    
        if (this.$element.attr('name') === 'someName') {
            // do something ... 
        },
    }
});

答案 1 :(得分:1)

您可以使用jQuery.each()迭代结果并存储对当前控件的引用。

$('input[type="range"]').each(function() {
  var that = $(this);
  that.rangeslider({
    param: true, 
    param2: false,
    onInit: function() {    
      if (that.attr('name') === 'someName') {
        // do something ... 
      },
    }
  });      
});