2011-07-07 53 views
0

我一直在使用.expander来处理包含动态jQuery数据的div(即DOM被加载后)的问题。用户确实建议尝试使用.live(),这让我更接近了一步,但它会产生一些古怪,如下图所示。我怎样才能让jQuery .live()和.expander在一起正常工作?

我指的是一个单独的问题,其中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,请参见下文。

SLIDE 5:使用.live()到每个模块

滑动件6在创建exandable /可折叠格的用户界面:点击DIV几次的结果...它增加了多个崩溃链接

幻灯片7:使用.live()的目标动态jQuery的数据

感谢您的任何意见哟功能你可以提供。

Slide 5

Slide 6

Slide 7

+1

作为一个方面说明,在图像中放置代码块非常烦人。修改通常基于发布的代码。我不能复制和粘贴代码,当它在图像中时,通过jsfiddle或发布解决方案进行测试。 –

+0

对不起,下次注意。感谢您的回应。 –

回答

2

您最初的答案是错的。你想要做的就是在AJAX内容加载后设置一个扩展绑定,而不是点击。这里是伪代码。

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

发生了什么是.expander每次单击标签隐藏div时都会被调用。我不确定何时加载动态数据,但您想在设置内容后立即绑定扩展器一次,并且只绑定一次。

如果出于某种原因无法访问AJAX回调函数,只要确保您只绑定一次事件即可。

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

非常感谢代码和解释。我现在将与此合作。你摇滚,谢谢。 –

+0

亚当,这是伟大的工作...现在唯一的事情是我试图让崩溃发生在页面加载。就像现在这样,只有当我点击某个地方的div并显示时,才会发生崩溃。如何实例化这个没有点击和onload? –

+0

您无法在加载时执行此操作。内容在加载时不存在。您需要在加载您的AJAX函数中的内容后立即执行此操作。看到我的第一个代码块 - 这就是它要解决的问题。 –

相关问题