禁用超链接
回答
不禁用它们会更容易,但仅仅是为了防止它们做他们自动执行的操作。我会用$().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