gpt4 book ai didi

jQuery 和 livequery - 检查函数是否已附加到元素

转载 作者:行者123 更新时间:2023-12-01 03:54:04 24 4
gpt4 key购买 nike

我正在运行这个:

$("*:not(#boo) .content").livequery(function(){  
$("input, select").blah();
});

blah() 看起来像这样:

(function( $ ) {
$.fn.blah = function(){
var that = this;
return this.each(function(){
$(this).bind('change', function(){
// do some stuff here

return true;
}).change();

});
};

})(jQuery);

html 看起来像:

<div id="boo">
<div class="content">
<input type="text" />
<input type="text" />
...
</div>
</div>

<div class="content">
<input type="text" />
<input type="text" />
</div>
...

所以我想做的就是将该函数和事件附加到不在 #boo 内的每个输入元素。这是可行的,但问题是,每秒一遍又一遍地这样做,浏览器就会卡住。

我需要 livequery,因为 html 有时会更新,并且我需要将事件再次附加到新元素。

那么我如何检查 blah() 是否已应用于输入元素并在那里停止?

最佳答案

说实话,我不会那样做。您的第一个语句是一个很大的NoNo,通过查询标记中的每个节点,然后排除您需要的元素。为什么不这样做:

<罢工>

<罢工>
$('input').filter(function() { return !!$(this).closest('#boo').length } )
.live('change', function() {
// do some stuff here
}).change();

这当然只有在没有什么超出我的范围的事情要做的情况下才有意义。但看起来你甚至不需要 .livequery在这里。

更新

上面的代码无法运行。但这应该可以做到:

$('input').live('change', function() {
if(!$(this).closest('#boo').length) {
// do some stuff here
}
}).change();

关于jQuery 和 livequery - 检查函数是否已附加到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849407/

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