如何让jQuery .live()和.expander一起正常运行?

我一直遇到让.expander与包含动态jQuery数据的div一起工作的问题(即在加载DOM之后)。 一个用户确实建议尝试.live(),这让我更近了一步,但它创造了一些奇怪,如下图所示。

我指的是一个单独的问题,其中https://stackoverflow.com/users/830804/eric建议我尝试.live(): 如何使用扩展器函数来处理动态jQuery数据?

注意:幻灯片1-4位于我之前的问题:

如何使用扩展器函数来处理动态jQuery数据?

幻灯片5-6见下文。

幻灯片5:使用.live()在每个模块中创建一个exandable / collapsable div的UI

幻灯片6:在div上多次单击的结果…它添加了多个折叠链接

幻灯片7:使用.live()来定位动态jQuery数据的函数

感谢您提供的任何建议。

幻灯片5

幻灯片6

幻灯片7

你的初步答案是错误的。 您要做的是在加载AJAX内容后设置扩展绑定,而不是单击。 这是伪代码。

$.get('...' function(d) { $('#dynamiclongp').text(d).expander(...); }); 

发生的事情是每次点击标签隐藏的div时都会调用.expander。 我不确定您何时加载动态数据,但是您希望在设置内容后立即绑定一次扩展器,并且只需绑定一次。

如果由于某种原因无法访问AJAX回调函数,请确保只绑定一次事件。

 var bound = false; $('div.tags-hidden').live('click', function() { if(!bound) { $(this).find('p').expander(...); bound = true; } });