如何让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数据的函数
感谢您提供的任何建议。
你的初步答案是错误的。 您要做的是在加载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; } });