Javascript 如何删除“;onclick”;使用JQuery,以便以后可以再次添加它?
Js代码: 我在某个元素中添加了一个.on(“click”,…)Javascript 如何删除“;onclick”;使用JQuery,以便以后可以再次添加它?,javascript,jquery,Javascript,Jquery,Js代码: 我在某个元素中添加了一个.on(“click”,…) $("#sq" + nextPossibleIndices[i]).on("click", function () {...}); 然后我使用.unbind('click')删除它 因此,添加它然后删除它可以很好地工作,但是一旦删除它,它就不能再添加到特定的html元素中。尝试这种机制 删除onclick事件的步骤 $("#sq" + nextPossibleIndices[i]).removeAttr("onclick");
$("#sq" + nextPossibleIndices[i]).on("click", function () {...});
然后我使用.unbind('click')删除它
因此,添加它然后删除它可以很好地工作,但是一旦删除它,它就不能再添加到特定的html元素中。尝试这种机制
删除onclick事件的步骤
$("#sq" + nextPossibleIndices[i]).removeAttr("onclick");
它将删除onclick属性您始终可以自己保留该状态,类似这样(我将
解除绑定
替换为关闭
,因为它已被弃用):
//在数组中维护单击处理程序。
常量clickHandlers=[];
//添加相关的单击处理程序:
clickHandlers.push(功能(ev){
log('dosomethinclick');
});
//稍后,设置它们:
$(“#sq”+nextPossibleIndex[handlerIndex])。在(clickHandlers[handlerIndex]);
//删除它们:
$(“#sq”+nextPossibleIndex[handlerIndex])。关闭(单击Handlers[handlerIndex]);
//然后,再次添加它们:
$(“#sq”+nextPossibleIndex[handlerIndex])。在(clickHandlers[handlerIndex]);
我想您可能正在寻找,它在不久前被弃用后取代了unbind。在您的代码中,它将如下所示:
$("#sq" + nextPossibleIndices[i]).off('click');
如果您对它不起作用感到困难,请尝试再次检查您选择的元素是否正确。在紧急情况下,您可以通过在Chrome/Firefox控制台中尝试该方法并从所有内容中删除单击绑定来确认至少该方法(off)有效:
$('*')。off('click')代码>当然,你不想在实际的站点代码中使用它。你所描述的应该在理论上可行,所以你应该创建一个。您也可以改为检查单击处理程序中的变量。可能重复的而不是添加和删除,您可以只添加单击中的逻辑以取消它吗?您应该可以再次添加它。你能告诉我你是怎么加回去的吗?您还应该使用off()而不是unbind()。在使用.on()时,您应该使用.off()而不是unbind()。此外,如果要删除然后再次添加函数,则应将函数保存在某个位置或使其非匿名。发布的示例代码表明事件处理程序未存储为属性,因此这不会起任何作用。我想跟踪状态是有意义的。因为我的案子很简单,所以没有必要-。off()为我解决了它。无论如何谢谢你!
$("#sq" + nextPossibleIndices[i]).off('click');