gpt4 book ai didi

jquery - 从匿名 jQuery 函数中访问 $(this)

转载 作者:行者123 更新时间:2023-12-01 02:34:27 25 4
gpt4 key购买 nike

我正在寻找一种方法来实现 jQuery 的自定义“enterKey”事件:

$('selector').enterKey(function(){  
alert( $(this).val() ) // doesn't work
});

我做了类似https://stackoverflow.com/a/5689145/1123630的事情它有一个异常(exception):我无法从我的匿名函数中访问 $(this)

我想要的简化版本:

$.fn.test = function( ev ) {
ev();
}

$('#val').test( function(){
alert( $(this).val() ); // works well with static text,
//but not with "this" pointer
});

如有任何帮助,我们将不胜感激

最佳答案

调用ev的方式,this将引用全局对象(浏览器中的window)。 MDN has a nice summary about this.

您必须使用call [MDN]显式设置thisapply [MDN] ,或者只是将回调传递给 each [docs] :

$.fn.test = function( ev ) {
return this.each(ev);
};

通过使用 each,您可以确保您传递的回调中的 this 仅引用一个 DOM 元素,就像其他回调一样,就像您传递给 .click() 的那样。

否则,在插件方法内,this 引用所有选定的元素。所以这将是错误(或者至少与典型的 jQuery 回调不同):

$.fn.test = function( ev ) {
ev.call(this);
return this;
};

另一方面,这也可以,但不必要的冗长:

$.fn.test = function( ev ) {
return this.each(function() {
ev.call(this);
});
};

如果您想将自定义参数传递给回调 (ev),则必须执行此操作,否则 ev 会收到与 each< 相同的参数 回调。

关于jquery - 从匿名 jQuery 函数中访问 $(this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com