javascript - 使用在 jQuery.on( 调用中对 'this' 进行操作的函数

标签 javascript jquery function events this

考虑以下 jsFiddle:http://jsfiddle.net/JtN9W/4/

<div id= 'MyDiv'>screamer</div>

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

我试图将 div 的单击事件绑定(bind)到“this”对象上的 JQuery 函数。我知道我可以通过更改函数并将对象作为变量来做到这一点,但我想保持函数签名不变并让它在“this”对象上工作。我如何实现这一目标?

最佳答案

您没有 scream 函数,但您拥有的是 jQuery.fn.scream 函数,因为您已将其附加到该命名空间。

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

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

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

FIDDLE

关于javascript - 使用在 jQuery.on( 调用中对 'this' 进行操作的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181306/

相关文章:

javascript - 如何使用 Javascript 和 Angular 显示货币符号

javascript - jquery Accordion 列中的 Slickgrid 无法正确显示

javascript - 通过表单提交在 HTML5 canvas 上保存框的坐标

JavaScript 从 ajax 请求保存数据

javascript - 日期之间耗时

python - 在 pandas 列上应用函数

php - 如何从 ajax 返回调用 JavaScript 函数

javascript - 如何按与作为参数的给定键相同的键数对对象数组进行排序?

Javascript替换类中的全局参数

php - 我无法让我的 PHP "else"条件 block 工作