禁用超链接
回答
不禁用它们会更容易,但仅仅是为了防止它们做他们自动执行的操作。我会用$().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. 禁用UIWebView中的超链接
- 2. 如何禁用JavaScript超链接?
- 3. 如何禁用div中的超链接
- 4. 如何禁用textarea和超链接
- 5. 配置HTMLPurifier禁用超链接
- 6. 从代码后面禁用超链接
- 7. 如何禁用正确的超链接
- 8. 禁用超链接,直到动画完成/禁用已被点击的元素上的超链接
- 9. 禁用链接
- 10. 锚链接禁用
- 11. asp:超链接显示无超链接
- 12. 使用JQuery禁用并启用所有超链接
- 13. 在JavaScript中启用和禁用超链接
- 14. 如何禁用所有超链接使用jquery
- 15. 使用javascript禁用链接
- 16. XLConnect超链接
- 17. 从超链接
- 18. 超链接
- 19. D3plus超链接
- 20. 超链接
- 21. iPhone超链接
- 22. GWT:超链接
- 23. 超级链接
- 24. 的超链接
- 25. 超链接
- 26. Excel超链接
- 27. 如何使用platform.runlater()在一个webview中禁用链接/超链接/导航,并在java中的另一个webview中打开该链接/超链接/导航
- 28. jquery mobile用另一个超链接替换超链接
- 29. jquery,用另一个超链接替换一个超链接?
- 30. Excel的超链接 - 使用超链接基础地址
这些超链接是什么样的?他们只有hrefs或者onclick事件吗? – 2010-10-23 14:26:34
他们有hrefs,但也有jQuery的功能,使用这些hrefs绑定点击事件给他们,并防止冒泡。所以,绝对的答案是,他们只有点击事件 – Lorenzo 2010-10-23 14:30:03