单击按钮时,我正在调用这段代码:
divElement.find('#_bajarFactura').one('click', function (event) {
event.preventDefault();
if (tooltipMenu)
tooltipMenu.hide();
alert('Se baja el archivo de la factura en lugar de verla en el navegador.');
divElement.find('#_bajarFactura').off('click', '**');
return false;
});
divElement是每次我单击该按钮时都会打开的弹出窗口。
请注意,我正在调用“一个”方法...问题是,即使我正在使用该方法,也要在多次单击按钮后多次调用处理程序。
我试图通过使用“ off”方法调用来强制取消绑定事件,但是没有成功。
有什么帮助吗?
编辑:这是divElement:
<div id="tooltip_content">
<ul class="list-group">
<li class="list-group-item">
<a id="_bajarFactura" href="#" title="Bajar factura"><i class="sl-icon-cloud-download"></i>Bajar factura original</a>
</li>
<li class="list-group-item">
<a id="_verFactura" href="#" title="Ver archivo de la factura"><i class="sl-icon-doc"></i>Ver factura original</a>
</li>
<li class="list-group-item">
<a id="_verDetalle" href="#" title="Ver detalles de la factura"><i class="sl-icon-magnifier-add"></i>Ver Detalle</a>
</li>
<li class="list-group-item">
<a id="_reEnviar" href="#" title="Re-enviar factura a un e-mail"><i class="icon-Mail-Forward"></i>Re-enviar</a>
</li>
</ul>
</div>
答案 0 :(得分:0)
事件处理程序附件one()
非常直观。事件处理程序将只运行一次。
如果不是,那是因为您多次设置了事件监听器。
for (var i=0; i<5; i++) {
$('#_bajarFactura').one('click', function(event) {
console.log('handler executed');
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="_bajarFactura">Click me!</button>
请注意您如何显示工具提示。
关闭$('#_bajarFactura').off('click');
时应致电。
注意:请勿使用('#_bajarFactura').off('click', '**')
。正如 @zfrisch 告诉您的那样,它将仅删除委托的事件。来自docs:
要从元素中删除所有委托事件而不删除未委托事件,请使用特殊值“ **”。