Javascript onbind或remove onclick attr失败

Javascript onbind或remove onclick attr失败,javascript,jquery,Javascript,Jquery,警报未触发,因为openClose()函数丢失并引发错误 <div class="spoilertop" onclick="openClose('cbd6c32c3118dbbdc3fbdc37e0805292')"> 我尝试了$(this.attr('onclick','').unbind('click')和e.preventDefault()但不起作用。您的代码起作用-第一次单击后,onclick属性被删除。但是,onclick会在jQuery中的单击之前触发,因此openCl

警报未触发,因为openClose()函数丢失并引发错误

<div class="spoilertop" onclick="openClose('cbd6c32c3118dbbdc3fbdc37e0805292')">

我尝试了
$(this.attr('onclick','').unbind('click')
和e.preventDefault()但不起作用。

您的代码起作用-第一次单击后,
onclick
属性被删除。但是,
onclick
会在jQuery中的
单击之前触发,因此
openClose
总是第一次触发,请参阅。您将看到,
foo
警报仅在第一次单击时显示

为了避免这种情况,您需要在加载时从元素中删除该属性,或者更好的是,将其从HTML中完全删除

要将其从加载的
.spoliertop
元素中删除,可以执行以下操作:

$(function() {
    $('.spoilertop').attr('onclick','').unbind('click');
});

无法真正理解这一点:我想在类中添加一个单击事件,但标记来自其他地方请参阅:我无法删除属性,因为它来自其他地方。。或者你是说我在单击事件之前删除它?我添加了示例代码来演示如何在页面加载时删除它:我在删除它时遇到了问题,因为我正在使用ajax调用,然后将结果绑定到dom。我输入了.finally(),但仍然无法删除onclick。我建议您打开一个新问题,详细说明您所经历的整个过程,包括JSON调用等。我想说这个问题现在已经讨论过了。
$(function() {
    $('.spoilertop').attr('onclick','').unbind('click');
});
$('.spoilertop').click(function(){
    $(this).unbind('click');
    $(this).removeAttr('onclick');
    alert('Off');
});