2011-10-28 84 views
1

我有一个图像库,图像和图像下的前一个/下一个链接使用AJAX重新填充。我想在用户有JS的时候阻止在这里工作的链接(以便使用AJAX方法),但只有当第一次加载页面时才能工作。.preventDefault()仅适用于第一次点击

这是代码,我在页​​面上停止链接工作 -

/** Prevent the default links from working when clicking on an ajax link */ 
$('#attachment-body a').click(function(e){ 
    e.preventDefault(); 
}); 

这里是一个链接的例子 -

<a href="<?php echo get_permalink($attachment->ID); ?>" title="<?php echo $attachment->post_name; ?>" rel="attachment" onclick="set_centre_image(<?php echo $attachment->ID; ?>, <?php echo $value_for_writing; ?>)"> 
    <img src="<?php echo $img_src[0]; ?>" /> 
</a> 

我猜这与应该禁用AJAX重新加载其默认值的元素有关,但是如果是这种情况,是否有解决方法。如果情况并非如此,是否有人知道我做错了什么?

谢谢。

回答

5

当您的元素被替换时,您的点击处理程序将被删除。你可以通过使用事件委托来克服这个问题。我建议使用.delegate

$('#attachment-body').delegate("a", "click", function(e){ 
    e.preventDefault(); 
}); 

http://api.jquery.com/delegate/

+0

感谢卡里姆,这似乎大多是工作,但在IE中只有'#依恋body'中的第一个链接是不是重新加载整个页面。在使用AJAX刷新内容之前,其他链接都忽略了'preventDefault()'命令。其他浏览器都很好。谢谢。 –

1

执行Ajax请求增加新的DOM元素?如果是的话,你可以试试这个:

$('#attachment-body a').live("click", function(e){ 
    e.preventDefault(); 
}); 
+0

'attachment-body'已经在页面上。它首先将其内容清空,然后用AJAX内容重新填充。然而,对于我希望停止加载的每个元素,采用您的示例并对其重复执行似乎适用于所有浏览器,除了IE正在尝试修复的一个小错误之外。谢谢。 –

相关问题