如何使用jquery在加载时禁用锚元素?

时间:2014-06-27 08:39:12

标签: javascript jquery html

在我的项目中,有一个锚元素如下。

<a href="javascript:void(0);" onclick="<?php if ($logged_uid == 0) { ?>login('mystudyplus','free','topicid8:41');$('#login_msg').show();<?php } else { ?>addtodashboard('mystudyplus','free','topicid8:41');<?php } ?>" class="btndownld" style="margin-left:120px;margin-top:200px;background:#f60098;">TRY NOW</a>

我只想在页面完全加载时禁用上面的锚元素。实际上我使用了jquery的removeattr属性。但我只想在不删除onClick()事件的情况下禁用anchor元素。所以请在这个问题上帮助我。

3 个答案:

答案 0 :(得分:0)

你可以试试这个

使用CSS

a{
    pointer-events: none;
}

动态使用jquery

$(document).ready(function(){
   $('a').css('pointer-events','none');

});

答案 1 :(得分:0)

您说您希望保留现有的属性处理程序。我想你是在谈论处理程序的定义,而不是它的处理,因为那是你试图阻止的。

解决方案1:完全删除属性

$(function(){
    $(window).load(function(){
        $("a").removeAttr("onclick");
    });
});

解决方案2:更改属性代码

$(function(){
    $(window).load(function(){
        var link = $("a");
        var existing = link.attr("onclick");
        link.attr("onclick", "return;" + existing);
    });
});

解决方案3:更改属性但存储定义

$(function(){
    $(window).load(function(){
        var link = $("a");
        var existing = link.attr("onclick");
        link.attr("data-onclick", existing)
            .removeAttr("onclick");
    });
});

This JSFiddle显示了所有三种解决方案。我已经编写了它,因此它不会在页面加载时更改链接,而是通过单击链接来模拟页面加载。首先单击前三个链接中的任意一个,然后再模拟页面加载并再次单击任何链接,您将看到所有这些链接都有效。

答案 2 :(得分:-2)

编写如下脚本

$(window).load(function(){
    $("a").removeAttr("onclick");
});