javascript - 打开或关闭内联 onClick 事件

标签 javascript jquery

我正在做一些验证,我需要关闭内联 onClick 事件,然后将其打开。

Jquery on off 方法不适用于内联 onClick 事件。下面的行删除了 onClick 事件。在此之前,我将事件保存到数组中

$('.elements a').prop('onclick',null).on('click');

将事件保存到数组中

    var arr = [];
    var i = 0;
     $('.elements a').each(function(){
        arr[i++] = $(this).attr('onclick');
       });

如何以相同的顺序将这些事件重新分配给每个元素。希望可以使用 addEventListener 添加它?

或者还有其他方法可以达到同样的效果吗?

最佳答案

由于您必须使用内联事件处理程序,因此您可以将删除的属性存储在数组中,然后将它们重置回来:

var events = $('.elements a').map(function() {
    var onclick = $(this).attr('onclick');
    $(this).removeAttr('onclick');
    return onclick;
}).get();


// ... Apply events later
$('.reset').click(function() {
    $('.elements a').each(function(i) {
	    $(this).attr('onclick', events[i])
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="elements">
    <a href="#" onclick="console.log(1)">Link 1</a>
    <a href="#" onclick="console.log(2)">Link 2</a>
    <a href="#" onclick="console.log(3)">Link 3</a>
</div>

<button class="reset">Reset events</button>

关于javascript - 打开或关闭内联 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385424/

相关文章:

javascript - 更快的滚动事件? - 滚动后背景 "jumps"

jquery - 为什么 jquery 不能在 IE8 中工作,但在 chrome/firefox 中工作

javascript - Webpack:导出到窗口中的现有模块

javascript - 在Javascript中将带方括号的字符串转换为数组或列表

javascript - 为什么 AngularJS Controller 作用域不像常规 javascript 作用域那样工作?

javascript - 如何使用 Cropper 通过 javascript 检索 toDataURL 字符串 by fengyuanchen

jquery - 动态垂直对齐

javascript - 将查询字符串添加到 data-href

javascript - Amazon AWS SDK MediaConvert 不是构造函数

javascript - jQuery 计数器插入逗号来分解字符串