.preventDefault()仅在第一次点击时工作

时间:2011-10-28 08:23:55

标签: javascript ajax

我有一个图像库,其中图像和图像下的上一个/下一个链接使用AJAX重新填充。当用户使用JS(这样使用AJAX方法)时,我想阻止在这里工作的链接,但只有在第一次加载页面时才有效。

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

/** 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重新加载,但如果是这样的话,有没有办法绕过它。如果不是这样的话,有人知道我做错了吗?

感谢。

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

ajax请求是否添加了新的DOM元素?如果是这样,你可以试试这个:

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