javascript - jQuery - 单击文件输入的父级并触发文件输入的单击事件后,它返回“递归过多”
问题描述
我的 jQuery 中有这个:
$(document).on('click', '.upload-wrap', function(event)
{
$('[name="uploads[]"]').trigger('click');
});
但它返回“太多递归”错误!但是它不适用于我的其他元素,例如:
$(document).on('click', '.upload-image-wrap', function(event)
{
$(this).next('[name="image"]').trigger('click');
});
我已经使用 setTimeout 来解决这个问题:
$(document).on('click', '.upload-wrap', function(event)
{
setTimeout(function() {
$('[name="uploads[]"]').trigger('click');
}, 0);
});
但是现在 Firefox 在页面顶部显示“Firefox 阻止此站点打开 99999999 弹出窗口”,其中 99999999 以毫秒为单位增加。
我该如何解决?
谢谢
解决方案
如果 a.upload-image-wrap
具有该'[name="uploads[]"]'
属性,您可以使用它not()
来排除'[name="uploads[]"]'
触发委托事件:
$(document).on('click', '.upload-wrap:not([name="uploads[]"])', () => {
$('[name="uploads[]"]').trigger('click');
});
另一种选择是检查事件是否由人触发:
$(document).on('click', '.upload-wrap', (e) => {
if (e.originalEvent !== undefined) $('[name="uploads[]"]').trigger('click');
});
推荐阅读
- c# - 如何插入数据库 SQL 事务?
- ruby-on-rails - 在 Rails 上做出反应 ReactOnRails::PrerenderError
- flutter - 如何将流与提供者混合?
- android - Android 的活动视图
- sublimetext3 - Sublime Text:添加“Permute Lines -> Shuffle”快捷键
- c - structure initialization failed
- reactjs - React:是否可以将事件传递给底层 iframe?
- ios - 如何根据调用其他函数的次数来操作 switch 函数?
- elasticsearch - Elasticsearch 慢查询和高 CPU 使用率
- javascript - 禁用单选按钮检查