我正在做一些验证,我需要关闭内联 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/