繁体   English   中英

如何使用jQuery禁用加载时的锚元素?

[英]How to disable anchor element on load using jquery?

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

<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()事件。 所以请在这个问题上帮助我。

你可以试试这个

使用CSS

a{
    pointer-events: none;
}

动态使用jQuery

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

});

您说您想保留现有的属性处理程序。 我想您在谈论的是处理程序定义,而不是处理程序,因为这就是您要防止的内容。

解决方案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");
    });
});

该JSFiddle显示了所有三种解决方案。 我已经编写了它,以便它不会更改页面加载时的链接,而是通过单击链接来模拟页面加载。 首先单击前三个链接中的任何一个,然后模拟页面加载,然后再次单击任何链接,您将看到它们全部正常工作。

像下面这样写脚本

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM