禁用超鏈接
回答
不禁用它們會更容易,但僅僅是爲了防止它們做他們自動執行的操作。我會用$().delegate
做到這一點:
$(document.body).delegate('a', 'click', function(e) {
if ($(this).is('.disabled')) { // or whatever logic here
e.preventDefault();
}
});
您可以在有條件的條款,例如,在使用任何邏輯檢查頁面上的其他元件的存在,檢查配置變量等
編輯此,如果有越往上樹停止傳播的處理程序將不能可靠地工作。如果你擁有的處事傳播功能的負荷,你的最簡單的辦法是做條件檢查每個函數的開始:
$('#your_link').click(function(e) {
if (logic) {
e.stopPropagation();
e.preventDefault();
};
// the rest of your function here
});
lonesomeday - 如果你打算在'
'上放置'.delegate()',你可能只需要使用'.live()',因爲你是沒有真正獲得任何效率。 – user113716 2010-10-23 15:05:36@Patrick(1)'live'總是效率不高,因爲它做了不必要的原始選擇; (2)'delegate'具有更多的邏輯語法,IMO。 – lonesomeday 2010-10-23 16:55:40
+1關於邏輯語法,我完全同意。我想我可以認爲這是一個引人注目的理由,就像你所做的那樣使用'.delegate()'。關於原始選擇,這是我沒有考慮過的一個很好的觀點。我完全改正了。 :O) – user113716 2010-10-23 17:09:38
這將取決於一點點行是如何選擇。
這個例子假設與類.select
的<tr>
內<a>
點擊將禁用行(除了.select
鏈接)中有一個href
屬性的所有鏈接。
$('#myTable tr a.select').click(function() {
$(this).closest('tr').find('a:not(.select)[href]').addClass('disabled');
});
因此,每個在具有.click()
處理行的鏈接應該首先檢查,看它是否發射其代碼之前有.disabled
類。
$('#myTable tr a.someClass').click(function(e) {
// sounds like you want these either way?
e.preventDefault();
e.stopPropagation();
if(!$(this).hasClass('disabled')) {
// run code when not disabled
}
});
有關使用類這個好處是,你可以爲了給視覺線索的鏈路被禁用的用戶添加CSS到該類。
- 1. 禁用超鏈接
- 2. 禁用啓用超鏈接
- 3. 禁用UIWebView超鏈接
- 4. 禁用超鏈接在.NET
- 5. 禁用Mvc3超鏈接
- 6. 如何使用jquery禁用超鏈接
- 7. 使用css禁用超鏈接
- 8. 禁用JTextPane中的超鏈接
- 9. 禁用超鏈接在UIWebView的
- 10. 配置HTMLPurifier禁用超鏈接
- 11. 從代碼後面禁用超鏈接
- 12. 如何禁用JavaScript超鏈接?
- 13. 在DatagridHyperlinkColumn中禁用超鏈接
- 14. 如何禁用div中的超鏈接
- 15. 如何禁用textarea和超鏈接
- 16. 禁用UIWebView中的超鏈接
- 17. JQuery禁用所有超鏈接
- 18. 如何禁用正確的超鏈接
- 19. 禁用超鏈接,直到動畫完成/禁用已被點擊的元素上的超鏈接
- 20. 禁用鏈接
- 21. 禁用鏈接
- 22. 錨鏈接禁用
- 23. asp:超鏈接顯示無超鏈接
- 24. Apache OFBiz爲用戶啓用/禁用超鏈接
- 25. 使用JQuery禁用並啓用所有超鏈接
- 26. 如何禁用所有超鏈接使用jquery
- 27. 在JavaScript中啓用和禁用超鏈接
- 28. 如何啓用和禁用gridview中的超鏈接?
- 29. 如何禁用和啓用與jQuery的超鏈接
- 30. 與超鏈接
這些超鏈接是什麼樣的?他們只有hrefs或者onclick事件嗎? – 2010-10-23 14:26:34
他們有hrefs,但也有jQuery的功能,使用這些hrefs綁定點擊事件給他們,並防止冒泡。所以,絕對的答案是,他們只有點擊事件 – Lorenzo 2010-10-23 14:30:03