【发布时间】:2019-04-10 09:36:32
【问题描述】:
当我点击一个按钮时,我正在调用这段代码:
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>
【问题讨论】:
-
我不明白。您说单击按钮时会打开
divElement,但#_bajarFactura(我猜那是按钮)在divElement内...您可以发布您的HTML 的精简版本吗? -
您是否正在动态重新创建
#_bajarFactura?是否有可能多次调用创建事件侦听器的代码? -
不不不... #_bajarFactura 不是按钮.....它只是打开的弹出窗口中的一个 元素。我用 divElement 编辑了问题
-
如果您使用
id作为选择器,则不需要使用.find,只需使用选择器即可。$("#_bajarFactura")。其次,您正在调用e.preventDefault,这将阻止.one方法知道它是否被调用过一次。最后.off("click", "**")将删除所有委托事件,但click事件不是委托事件。它已明确添加到您的元素中。 -
@jstuardo 在一个页面中不应有多个具有相同
id的元素。如果您不使用href,那么您可以使用带有样式的跨度标签吗?这些问题似乎会变得更加复杂。