2011-10-28 109 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正在嘗試修復的一個小錯誤之外。謝謝。 –

相關問題