javascript - 为什么我在触发点击时遇到过多的递归?

标签 javascript jquery html vb.net

我的 C# Web 应用程序中有以下代码:

<div id="divDocument" class="cursor-pointer">
  <i class="icon-document font-size-3em mt10 fileupload-border"></i>
  <asp:FileUpload ID="fileUploadDocument" runat="server" CssClass="d-none" />
</div>
$(document).ready(function () {
  $("#divDocument").click(function () {
    $("#<%= fileUploadDocument.ClientID %>").trigger('click');
  });
});

但是我在 javascript 控制台收到以下错误:

InternalError: too much recursion

有人可以帮助我吗?

亲切的问候

最佳答案

该错误是因为您在当前元素的子元素上引发了单击事件,该子元素正在处理单击事件,从而创建无限循环。

要解决此问题,您需要删除内部 trigger('click'),或者在该内部元素上添加 stopPropagation() 调用。

但是值得注意的是,如果您的目标是增加文件输入的命中区域,那么更好的方法是将 label 元素包裹在 输入。这可以避免您的问题并消除对任何 JS 代码的需要。

<label>
  <i class="icon-document font-size-3em mt10 fileupload-border"></i>
  <asp:FileUpload ID="fileUploadDocument" runat="server" CssClass="d-none" />
</label>

关于javascript - 为什么我在触发点击时遇到过多的递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60934374/

相关文章:

javascript - Angular UI Tab 的 Select 事件没有按预期工作

javascript - 如何将变量设置为 Cookie (javascript)

php - 我可以将 Logo 移到顶部菜单的中央吗?

Javascript/Jquery 幻灯片菜单在 Chrome 中不起作用

javascript - 创建一个三 Angular 形朝下的动态 div

image - 使用 HTML5 拖放时,如何在拖动区域上方更改拖动图像?

javascript - 从特定输入增加字母表

javascript - react Pubnub 聊天。消息重复或根本没有消息

javascript - 在 JS 中使用 null 声明文字成员以便稍后初始化是可行的做法吗?

通过 "container.find()"检索 Id 值时,Javascript 返回 false