我必须链接(锚点),我想在点击另一个时启用和禁用每个。
这是其中一个锚点:
<a href="#" id="lnkAddNew" onclick="addNewComment()">
<i class="glyphicon glyphicon-plus"></i>Add New
</a>
然后我有一个方法可以禁用它:
$('#lnkAddNew').prop('onclick', null).off('click');
但是我想再次启用点击,但我不想执行该事件,我只是想启用它,所以当我这样做时,我不仅启用(或绑定)点击事件,但也执行:
$('#lnkAddNew').prop('onclick', addNewComment).on('click');
在最后一行,如何避免执行click事件,我只想绑定click事件。
由于
答案 0 :(得分:2)
jQuery有一种注册事件处理程序的方法:.on()
。
要取消注册特定处理程序,诀窍是将其作为命名函数...
您只需要传递函数名称作为.off()
的第二个参数即可。
function disableLinks(){
console.log("CLICK!");
$(".disableToggle").off("click",disableLinks);
}
$(".disableToggle").on("click",disableLinks);
$("#restore").on("click",function(){
$(".disableToggle").on("click",disableLinks);
});
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="lnkAddNew" class="disableToggle">
<i class="glyphicon glyphicon-plus"></i>Add New
</a><br>
<br>
<a href="#" id="lnkAddAnother" class="disableToggle">
<i class="glyphicon glyphicon-plus"></i>Add another
</a><br>
<br>
<button type="button" id="restore">Restore the click handler</button>