使用$(this)不起作用

时间:2016-08-02 18:14:05

标签: javascript jquery this

我正在尝试运行一个脚本,将一些事件添加到类中。 我希望这些事件只能添加到此类中的一个特定DIV中。我正在使用pep.js:

 $( ".drag" ).pep({
start: function() {
        $(".drag").addClass('color');
        $('.drag').next(".text").fadeIn("slow");
        $(".text-video").fadeOut("fast");

    },
stop: function() {
        $('.drag').removeClass('color');
        $('.drag').next(".text").fadeOut("slow");
    }

  });

这样可行,但它会立即触发所有.drag项目...而且我只希望我拖动的项目添加了所有事件。

我试着写下:

$(".drag", this).addClass('color');

或:

$(this).addClass('color');

或:

$(this.element).addClass('color');

但这一切都行不通。 有人有想法吗?

更新

我做了一个JSFiddle,希望能解释我的问题。

https://jsfiddle.net/ke6d5r1h/

如您所见,例如.color类不仅添加到被拖动的DIV中,还添加到另一个DIV中。这就是我想要改变的。

1 个答案:

答案 0 :(得分:1)

在事件处理程序中使用console.log(arguments),我能够确定处理程序是通过两个参数传递的:事件对象和包含上下文的对象。上下文有一个属性$el,它是事件目标的jQuery对象。

start: function(e,a) {
    a.$el.addClass('color');
    a.$el.next(".text").fadeIn("slow");
    $(".text-video").fadeOut("fast"); 
},

https://jsfiddle.net/85tffqhL/

e.target也会为您提供元素的引用。