javascript - jQuery:使用 off() 禁用 onclick 事件不起作用

标签 javascript jquery html

这是我想要做的一个简单示例,我有 HTML 代码,我的目标是禁用三个超链接 #validate#organize#export:

<p id="menuitems" class="inline textcenter">
                        <a id="import" href="javascript:void(0);" onclick="switchScreen('Import');">IMPORT</a> >> 
                        <a id="validate" href="javascript:void(0);" onclick="switchScreen('Validate');">VALIDATE</a> >> 
                        <a id="organize" href="javascript:void(0);" onclick="switchScreen('Organize');">ORGANIZE</a> >> 
                        <a id="export" href="javascript:void(0);" onclick="switchScreen('Export');">EXPORT</a>
                    </p>

当我尝试调用以下内容时,没有任何反应。我正在使用 jQuery 1.11.4,并且我了解到禁用事件监听器的方法自 1.7 以来已发生变化。所以我想知道下面的 JavaScript 代码是否有错误或有一些新的更改:

$('#validate').off('click');
$('#organize').off('click');
$('#export').off('click');

最佳答案

一种方法是暂时将 onclick 设置为 null,但将原始元素 onclick 存储在元素或 jquery 对象中(例如 data)。使用辅助函数,您可以打开或关闭元素:

function setEnabled($a, Enabled ){
    $a.each(function(i, a){          
        var en = a.onclick !== null;        
        if(en == Enabled)return;
        if(Enabled){
            a.onclick = $(a).data('orgClick');            
        }
        else
        {
            $(a).data('orgClick',a.onclick);
            a.onclick = null;
        }
    });
}

可以用如下方式调用:

setEnabled($('#validate'), false); 

(由于每个元素也适用于具有多个元素的 jquery 对象)

Example fiddle

关于javascript - jQuery:使用 off() 禁用 onclick 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614561/

相关文章:

javascript - IE DIV悬停区域不一样。直到我添加背景颜色

javascript - 使用 jQuery 文件上传无法上传文件

php - 将页面从 html 转换为 php 后的位置问题

javascript - 有什么方法可以使 javascript 中的 encodeURIComponent 忽略某些字符?

javascript - 这个用 JavaScript 构建的异步测试套件将如何终止?

javascript - 使用 cookie 切换主体类别

html - 如何使菜单可以越过 Logo ?

html - 如何将多个供应商前缀添加到一个 CSS 属性?

JavaScript/JQuery 交换 HTML 表格的水平和垂直顺序

javascript - 无法使用 Selenium 关闭 Javascript