gpt4 book ai didi

jquery - 如何动态重新绑定(bind) JQuery 对象

转载 作者:行者123 更新时间:2023-11-30 23:50:01 27 4
gpt4 key购买 nike

我正在为 Joomla! 制作一个模块!使用 Ajax 向数据库呈现不同查询的客户端页面。这些查询的结果是我重新生成了不同 DIV 的整个 HTML 代码。在我的 jQuery 对象中,我有一个名为 cache() 的函数,它存储我需要将其附加到不同事件的所有对象。我的问题是,每次我从这些 div 中的任何一个重新生成 HTML 代码时,我都必须重建所有对象,因此我创建了一个新函数 recache() 以使这项工作更加容易。

我想这不是最好的程序。有没有办法让这些处理程序保持事件状态,而不必每次都调用这个函数cache(),或者有没有办法动态重新绑定(bind)这个对象?

谢谢!

这是我的代码:

    var Object = {
init: function() {
this.cache();
this.bindEvents();
return this;
},

cache: function() {
OBJECTS....
this.nameObject = $('#anchor');
etc..
},

recache: function() {
Objects to be recached as needed.
},

bindEvents: function() {
EVENTS attached to the objects.
this.nameObject.on( 'click', 'context', this.nameFunction );

},

nameFunction: function() {
#CODE....
}

}; //END Playlist (Object)

window.Object = Object.init();

我通常使用 on() 函数而不是 delegate()live()bind() >,但我不确定这正是我的问题。

提前致谢!

最佳答案

您暗示了正确的计划:使用.on()。但请记住,当您委托(delegate)监听器时,您需要委托(delegate)给不会被销毁的监听器。

或者换句话说:

// will not do anything useful for this scenario:
$('.something').on('click', function() { /* ... */ });

不同于

// use the document as a listener: will work but not efficient
$(document).on('click', '.something', function() { /* ... */ });

这与

不同
// use a closer ancestor that is NOT destroyed. Best option if you can
$('#someAncestor').on('click', '.something', function() { /* ... */ });

关于jquery - 如何动态重新绑定(bind) JQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944499/

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