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

时间:2011-07-07 21:48:30

标签: jquery live expand expander

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

我指的是https://stackoverflow.com/users/830804/eric建议我尝试.live()的单独问题: How can I get the expander function to work with dynamic jQuery data?

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

How can I get the expander function to work with dynamic jQuery data?

幻灯片5-6见下文。

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

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

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

感谢您提出的任何建议。

Slide 5

Slide 6

Slide 7

1 个答案:

答案 0 :(得分:2)

您的初步答案是错误的。您要做的是在加载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;
    }
});