2011-04-18 79 views
1

我更换使用jQuery AJAX负载在一个新的div来加载一个div更换事业部:使用jQuery .load导致新的div链接无法正常工作

$("td.prod2").click(function(){ 
    $("#products-details").load("/products/Test.aspx"); 
    }); 

新DIV设有一个无序列表取代了先前的无序列表:

<ul> 
<li><a href="">Link 1</li> 
<li><a href="">Link 2</li> 
<li><a href="">Link 3</li> 
</ul> 

当我点击新div中的链接时,原始div的内容会重新加载到页面上?

任何想法?

+0

新div中的链接指向什么?那么老的div的内容如何被加载呢? – 2011-04-18 18:53:30

+0

请详细解释。这很混乱。 – 2011-04-18 18:53:54

+0

新div中的锚元素有一个空白的href,点击这些链接将把用户带到同一个页面,然后只显示旧的div。你在期待什么? – Chandu 2011-04-18 18:54:39

回答

1

尝试使用live来代替绑定事件。这将确保当DOM改变你的新内容将有事件......

$('td.prod2').live('click', function() { 
    $("#products-details").load('/products/Test.aspx'); 
}); 

这绝对应该解决您遇到的问题。

有关live查看更多细节:http://api.jquery.com/live/

更新:你上面包含的代码看起来是不完整的...什么是你从“/products/Test.aspx”加载的内容?我假设它包含几个<td class="prod2">,应该将此事件绑定。

+0

我最近读过代理比live更可取 – Geoff 2011-04-18 18:54:48

+0

@Geoff:正确,'''delegate''更快,因为它使用上下文并且也不立即执行。我在回答中使用了''live''',因为问题中包含了完整的标记。 – McHerbie 2011-04-18 19:01:25

+0

谢谢,活动绑定工作 – Yahreen 2011-04-18 19:08:04

0

当您替换具有事件侦听器的元素时,这些侦听器将断开连接。您需要重新初始化它们或使用jQuery的.live()功能。