我想在加载过程中禁用链接,对于下面给出的代码
<span id="addlink">"<%= f.add_associated_link('Add Task', @project.tasks.build, :class=>"add") %></span>
我尝试使用下面的代码,但它不起作用
$("#addlink").attr("disabled", "disabled");
和
$("a.add").hide();
答案 0 :(得分:27)
function disableLink(e) {
// cancels the event
e.preventDefault();
return false;
}
如果要禁用它,请致电
$('#addlink').bind('click', disableLink);
如果要启用已禁用的链接,请致电
$('#addlink').unbind('click', disableLink);
答案 1 :(得分:4)
$('#addlink').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
return false;
将阻止发生默认事件 并防止事件冒泡
这两者之间的选择取决于你的使用。如果要停止默认操作并且还需要冒泡事件,请使用preventDefault
答案 2 :(得分:2)
我会选择混合RaYell和凤凰的解决方案,在混合中加入jQuery's namespacing:
$('#addlink').bind('click.killlink',function(event){
event.preventDefault();
// You can do any additional onClick behavior here
});
要取消绑定此事件,以及使用.killink命名空间分组的任何其他相关事件(任何类型),您可以运行此命令:
$('#addlink').unbind('.killlink');
正如凤凰指出的那样,使用return false
可以防止事件冒泡。 preventDefault()
具有非常明确的额外好处(与return false
不同,根据上下文,这可能意味着许多不同的事情。)