【发布时间】:2015-04-21 17:16:46
【问题描述】:
我在使用 JQuery Draggable 和 Sortable 插件时遇到了一个奇怪的错误。
我有一个可以添加到可排序容器中的可拖动对象列表。
页面的功能是能够将内容(可拖动)添加到页面(可排序)并能够在之后对其进行排序。 我可以添加多种类型的内容,例如文本、图形、表格和文件(例如图像)...
当他将图像对象放入可排序容器中时,我希望用户从他的计算机中选择一个文件进行上传。因此,我在放置结束时模拟了输入文件上的“单击”(因为可拖动和可排序已连接,这发生在可排序的“更新”事件中)。
但我不知道为什么,输入文件的点击事件确实被触发了(我检查了console.log())但是“选择文件”窗口从未打开。
如果我在萤火虫控制台中输入我的$('#upl input').click();,它会起作用...如果我在第三个链接中触发点击事件,它会起作用。但是当“点击”在可排序容器的更新事件中时,窗口就不会出现。我什至尝试使用 setTimeOut 延迟单击以等待更新事件结束,但是仍然触发了单击事件但没有窗口...
有人遇到过这个问题吗?
这是我在 jsfiddle 上的问题的简化。 https://jsfiddle.net/jp51cadt/3/ 您可以将“图像”放到正方形中。它会触发对下方输入的点击,但不会显示上传窗口。
function updateSortable(event, $ui) {
$('#upl input').on("click", function() {
alert("this works");
});
$('#upl input').click(); // not this
}
我添加警报以显示点击被触发...
【问题讨论】:
-
一些代码 sn-p(s) 会很有用。 “不起作用”很难在不查看代码哪里出错的情况下进行调试。
-
是的,我知道,这会很难,因为代码真的很复杂,而且还有很多其他你不需要知道的东西,但我正在研究一个更简单的错误版本无论如何这都会对我有所帮助...与此同时,我发布了这个...一个永远不知道的人,也许有人已经遇到过这个问题。
-
一个好的开始是“点击”发生的代码,以及周围的“更新事件”。 :)
-
谢谢,我更新了原帖。
标签: jquery jquery-ui jquery-ui-sortable jquery-ui-draggable jquery-events