jquery这和$(这个)

时间:2014-04-18 11:15:05

标签: javascript jquery jquery-plugins

这可能看起来像一个老问题,并且有许多页面可以解释这两者之间的区别,但我仍然完全不了解它,因为两者似乎对我都很好。我想我明白为什么我不能在嵌套函数中使用this$(this)。但为什么变量的两种替代方案都有效?哪个是我应该使用的合适的?

(function($) {
$.fn.helloWorld = function() {
  var $wrap1    = this;
  var $wrap2    = $(this);

  var keys = function(){
     $(document).keyup(function (event) {
        if (event.keyCode === 39) {
           console.log("key pressed");
           event.preventDefault();
           this.fadeOut();            //Does not work
           $(this).fadeOut();         //Does not work      
           $wrap1.fadeOut();          //Does work
           $wrap2.fadeOut();          //Does work
        }
     });
  };
  keys();
}
}(jQuery));

3 个答案:

答案 0 :(得分:1)

对于jQuery fn扩展名,this已经引用了jQuery对象,因此$(this)本质上是一个无操作符。

但是在大​​多数情况下,例如事件处理程序,this指的是触发事件的元素,您需要使用$(this)来调用它上面的jQuery函数。

答案 1 :(得分:1)

在函数回调中(到keyupthis应该是触发事件的DOM元素,而$(this)是包装该元素的jQuery对象(或者只包含该元素的jQuery集合) )。

但是,当您创建helloWorld扩展时,this是当前的jQuery对象(即您运行的{jQuery objecty / collection} $().helloWorld()。所以在这种情况下this和{{ 1}}都是jQuery对象,基本上都是一样的。

答案 2 :(得分:0)

$(this) - 表示当前DOM元素的jQuery Object,在该事件中调用此函数的事件

这个 - 在JavaScript中,这总是指我们正在执行的函数的“所有者”,或者更确切地说,指向函数是其方法的对象。