jquery - 为什么当我手动触发可排序事件时,UI 对象为 null?

标签 jquery jquery-ui-sortable

我正在编写一个页面,我想在其中手动触发可排序的事件(即使用 .trigger() 方法),以便更新用户输入时需要绑定(bind)到表单的输入的名称和 ID进行的更改不会自动触发适当的可排序事件。我有两件事让我感到困惑,如果有人知道并且愿意花时间的话,我希望能更好地理解它们。

第一个困惑点:我遇到了一个问题,如果我在 .sortable() 方法中定义事件(而不是附加对 .bind() 的额外调用,则“手动”.trigger() 方法不会执行任何操作)。我发现很多帖子解释了解决方法,但我不清楚这是一个功能还是一个错误。

第二个困惑点:当我手动触发事件时,“ui”对象为空。定义事件正常触发的时间。在我的应用程序中,我能够使用选择器解决这个问题,因为无论如何我真正需要的是 ui.item。但我很高兴知道其他人是否遇到过这种情况,我是否做错了什么等等。

我设置了一个 jsFiddle 来演示两个混淆点: http://jsfiddle.net/nanzalone/TDWXs/

第一个由“receive”事件说明。如果将项目从可拖动项拖到可排序项,您将看到该事件正确触发。但是按下“接收”按钮(调用 .trigger())不会执行任何操作。

第二个由“删除”事件说明。现在事件触发了,因为我使用了 .bind(),但警报显示使用“删除”按钮触发事件会导致空 ui 对象,而将项目拖到垃圾箱中以触发删除会产生非-空 ui 对象。

提前感谢您的任何指点,并对我可能无意中犯下的任何失礼表示歉意(我对 jQuery 还很陌生)。

最佳答案

我认为 ui 是一个对象,可用于确定与 ui 无关的事物(例如掉落的项目)。
如果您以编程方式触发事件,则没有用户交互,因此没有 ui 对象。这是有道理的,它也是确定事件是否以编程方式触发的一种方法(对于正常事件,您可以以 this 方式执行此操作)
在您的示例中, ui 对象包含诸如接收对象的原始位置、实际位置等属性。

关于jquery - 为什么当我手动触发可排序事件时,UI 对象为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908155/

相关文章:

javascript - jQuery : toggle footer, 将大小从#px 调整为 100% 宽度并返回

javascript - Facebox - Jquery 1.2.1 关闭功能在 1.3.2 中损坏

Jquery - 通过选择同一类的元素来删除类 $(.A).removeClass(.A)

jquery - 动态更改 Jquery UI 可排序助手?

php - 单击按钮时将 JSON 从 PHP 返回到 ajax

javascript - 使用登录保护 wordpress 自定义页面

jquery UI droppable 和 sortable 不起作用?

javascript - 如何删除jquery sortable中的元素?

jquery - 使用 jQueryUI 将可排序列表中的项目分组

javascript - JQueryUI 可排序 : Allow sorting only to second list but not back to first