【问题标题】:jquery link tag enable disablejquery链接标签启用禁用
【发布时间】:2010-11-13 06:24:55
【问题描述】:

我想在加载过程中禁用链接,下面给出的代码

<span id="addlink">"<%= f.add_associated_link('Add Task', @project.tasks.build, :class=>"add") %></span>

我用下面的代码试过了,但是没有用

$("#addlink").attr("disabled", "disabled"); 

$("a.add").hide();

【问题讨论】:

标签: jquery hyperlink tags


【解决方案1】:
function disableLink(e) {
    // cancels the event
    e.preventDefault();

    return false;
}

当你想禁用它时你打电话

$('#addlink').bind('click', disableLink);

当你想启用你调用的禁用链接时

$('#addlink').unbind('click', disableLink);

【讨论】:

  • 这是我见过的最好的答案。
【解决方案2】:
$('#addlink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

return false;

将阻止默认事件发生并且 并防止事件冒泡

因此在这两者之间进行选择取决于您的使用情况。如果您想停止默认操作并且还需要冒泡事件,请使用 preventDefault

【讨论】:

  • 如果你这样定义它,如果你以后不想恢复默认行为,你就不能轻易解绑它。
【解决方案3】:

我会选择 RaYell 和 phoenix 的混合解决方案,并在其中添加 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 不同,这可能意味着许多不同的事情,具体取决于上下文)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2016-05-02
    • 1970-01-01
    • 2012-02-01
    • 2011-04-16
    相关资源
    最近更新 更多