javascript - 为什么我在触发点击时遇到太多递归?
问题描述
我的 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 控制台收到以下错误:
内部错误:递归过多
有人能帮我吗?
亲切的问候
解决方案
该错误是因为您在处理单击事件的当前元素的子元素上引发了单击事件,从而创建了无限循环。
要解决此问题,您要么需要删除内部trigger('click')
,要么在该内部元素上添加stopPropagation()
调用。
但是值得注意的是,如果您的目标是增加文件输入的命中区域,那么更好的方法是label
在input
. 这避免了您的问题并消除了对任何 JS 代码的需要。
<label>
<i class="icon-document font-size-3em mt10 fileupload-border"></i>
<asp:FileUpload ID="fileUploadDocument" runat="server" CssClass="d-none" />
</label>
推荐阅读
- c++11 - 为什么编译器抱怨可以静态排除的路径(见下面的代码)?
- unity3d - 有什么办法可以在 Unity 中使用 SteamVR 摆脱屏幕镜像?
- reporting-services - 数据库表值/字符串更改时如何更新 SSRS 文本框
- c# - 无法为桌面桥应用程序、UWP 的 Windows 打包项目创建 bundle.appxupload 文件
- json - 找不到“@types”的类型定义文件
- android - Android 使用 libvlc 将实时视频流保存到存储
- r - 如何选择不包含特定字符的列?
- javascript - 如何使用以下代码仅选择集合中的特定文档?
- r - 将函数应用于返回列表的数据框的所有列
- django - Django:从 Google 进行身份验证时出现完整性错误。显示重复条目