Javascript 使用在';这';在jQuery.on(调用

Javascript 使用在';这';在jQuery.on(调用,javascript,jquery,function,events,this,Javascript,Jquery,Function,Events,This,考虑以下JSFIDLE: 尖叫者 jQuery.fn.scream=函数(){ 如果(这个.hasClass(“尖叫”)){ 警惕(“尖叫”); } 否则{ 警报(“shhhh”); } } $(函数(){ $('#MyDiv')。尖叫(); $(#MyDiv')。在(“点击”,尖叫); }); 我正在尝试将div的click事件绑定到“this”对象上的JQuery函数。我知道我可以通过更改函数并使其将对象作为变量来实现这一点,但我希望保持函数签名不变,并使其在“this”对象上内部工作。如

考虑以下JSFIDLE:

尖叫者 jQuery.fn.scream=函数(){ 如果(这个.hasClass(“尖叫”)){ 警惕(“尖叫”); } 否则{ 警报(“shhhh”); } } $(函数(){ $('#MyDiv')。尖叫(); $(#MyDiv')。在(“点击”,尖叫); });
我正在尝试将div的click事件绑定到“this”对象上的JQuery函数。我知道我可以通过更改函数并使其将对象作为变量来实现这一点,但我希望保持函数签名不变,并使其在“this”对象上内部工作。如何实现这一点?

您没有
尖叫
函数但是您拥有的是一个
jQuery.fn.scream
函数,因为您已经将它附加到了该名称空间

当然,您可以将该函数用作事件处理程序中的引用,但是
this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中

我无法理解你为什么会这样做,但我想:

jQuery.fn.scream = function() {
   if( $(this).hasClass("scream") ) {
      alert("scream");
   }
   else {
      alert("shhhh");
   }
}
$(function () {
   $('#MyDiv').scream();
   $('#MyDiv').on( "click", jQuery.fn.scream);
});

您没有
cream
函数,但是您有一个
jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间

当然,您可以将该函数用作事件处理程序中的引用,但是
this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中

我无法理解你为什么会这样做,但我想:

jQuery.fn.scream = function() {
   if( $(this).hasClass("scream") ) {
      alert("scream");
   }
   else {
      alert("shhhh");
   }
}
$(function () {
   $('#MyDiv').scream();
   $('#MyDiv').on( "click", jQuery.fn.scream);
});

您没有
cream
函数,但是您有一个
jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间

当然,您可以将该函数用作事件处理程序中的引用,但是
this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中

我无法理解你为什么会这样做,但我想:

jQuery.fn.scream = function() {
   if( $(this).hasClass("scream") ) {
      alert("scream");
   }
   else {
      alert("shhhh");
   }
}
$(function () {
   $('#MyDiv').scream();
   $('#MyDiv').on( "click", jQuery.fn.scream);
});

您没有
cream
函数,但是您有一个
jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间

当然,您可以将该函数用作事件处理程序中的引用,但是
this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中

我无法理解你为什么会这样做,但我想:

jQuery.fn.scream = function() {
   if( $(this).hasClass("scream") ) {
      alert("scream");
   }
   else {
      alert("shhhh");
   }
}
$(function () {
   $('#MyDiv').scream();
   $('#MyDiv').on( "click", jQuery.fn.scream);
});

此更改为
$(此)
,jQuery将能够使用它。

此更改为
$(此)
,jQuery将能够使用它。

此更改为
$(此)
,jQuery将能够使用它。

此更改为
$(此)
,jQuery将能够使用它。

您有以下代码

$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义
scream
函数,而是
jQuery.fn.scream
。而且,
hasClass
是一个
jQuery
方法,您需要使用
$(this).hasClass(“scream”)
而不是
this.hasClass(“cream”)
,因为
不是
jQuery
对象,而是
$(此)
jQuery
对象


您有以下代码

$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义
scream
函数,而是
jQuery.fn.scream
。而且,
hasClass
是一个
jQuery
方法,您需要使用
$(this).hasClass(“scream”)
而不是
this.hasClass(“cream”)
,因为
不是
jQuery
对象,而是
$(此)
jQuery
对象


您有以下代码

$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义
scream
函数,而是
jQuery.fn.scream
。而且,
hasClass
是一个
jQuery
方法,您需要使用
$(this).hasClass(“scream”)
而不是
this.hasClass(“cream”)
,因为
不是
jQuery
对象,而是
$(此)
jQuery
对象


您有以下代码

$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义
scream
函数,而是
jQuery.fn.scream
。而且,
hasClass
是一个
jQuery
方法,您需要使用
$(this).hasClass(“scream”)
而不是
this.hasClass(“cream”)
,因为
不是
jQuery
对象,而是
$(此)
jQuery
对象


属性fn
是jQuery对象的原型,用于向jQuery添加插件

当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,通常您只会使用一个常规函数

请注意,调用事件处理程序时引用的是元素,而不是包含该元素的jQuery对象,因此需要使用
$(this)
在元素上使用jQuery方法:

function scream() {
  if($(this).hasClass("scream")) {
    alert("scream");
  } else {
    alert("shhhh");
  }
}

$(function () {
  $('#MyDiv').on( "click", scream);
});
如果要制作插件,实现通常如下所示:

jQuery.fn.scream = function() {
  return this.click(function() {
    if($(this).hasClass("scream")) {
      alert("scream");
    } else {
      alert("shhhh");
    }
  });
}

$(function () {
   $('#MyDiv').scream();
});

fn
属性是jQuery对象的原型,用于向jQuery添加插件

当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,通常您只会使用一个常规函数

请注意,调用事件处理程序时引用的是元素,而不是包含该元素的jQuery对象,因此需要使用
$(this)
在元素上使用jQuery方法:

function scream() {
  if($(this).hasClass("scream")) {
    alert("scream");
  } else {
    alert("shhhh");
  }
}

$(function () {
  $('#MyDiv').on( "click", scream);
});
如果要制作插件,实现通常如下所示:

jQuery.fn.scream = function() {
  return this.click(function() {
    if($(this).hasClass("scream")) {
      alert("scream");
    } else {
      alert("shhhh");
    }
  });
}

$(function () {
   $('#MyDiv').scream();
});

fn
属性是jQuery对象的原型,用于向jQuery添加插件

当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,也不是目的