考虑以下 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);
});
关于javascript - 使用在 jQuery.on( 调用中对 'this' 进行操作的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181306/