防止附加元素的onclick事件?
Prevent onclick event of appended element?
我有一个页面,其中一些 onclick
代码被添加到附加元素,我想阻止 onclick
代码被触发。
这是我尝试过的方法:
$(function() {
$('.container').append('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>');
// Prevent onclick
$(document).on('click', '.appended', function (e) {
e.preventDefault();
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
不幸的是,这并没有阻止 onclick
所期望的行为
EDIT 应该提到这一点,但我无权访问将 onclick
事件添加到 HTML 的代码,但是如果可以在事后对附加元素执行此操作,我愿意删除该属性。
一个选项是使用 removeAttr()
删除 onclick
属性
$('.container').append('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>');
$('.appended').removeAttr('onclick');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
文档:removeAttr()
为此,您需要调用 removeAttr()
并删除 onclick
属性:
var $div = $('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>').removeAttr('onclick');
$('.container').append($div);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
更好的是,将它从您实际附加的 HTML 字符串中删除 - 假设您可以控制它。
我有一个页面,其中一些 onclick
代码被添加到附加元素,我想阻止 onclick
代码被触发。
这是我尝试过的方法:
$(function() {
$('.container').append('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>');
// Prevent onclick
$(document).on('click', '.appended', function (e) {
e.preventDefault();
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
不幸的是,这并没有阻止 onclick
所期望的行为
EDIT 应该提到这一点,但我无权访问将 onclick
事件添加到 HTML 的代码,但是如果可以在事后对附加元素执行此操作,我愿意删除该属性。
一个选项是使用 removeAttr()
onclick
属性
$('.container').append('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>');
$('.appended').removeAttr('onclick');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
文档:removeAttr()
为此,您需要调用 removeAttr()
并删除 onclick
属性:
var $div = $('<div class="appended" onclick="alert(\'DONT DISPLAY\')">CLICK ME</div>').removeAttr('onclick');
$('.container').append($div);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
更好的是,将它从您实际附加的 HTML 字符串中删除 - 假设您可以控制它。