jQuery-UI 可拖动克隆 - 启动处理程序是不是收到对被克隆元素的任何引用?

Posted

技术标签:

【中文标题】jQuery-UI 可拖动克隆 - 启动处理程序是不是收到对被克隆元素的任何引用?【英文标题】:jQuery-UI draggable cloning - Does the start handler receive any reference to the element being cloned?jQuery-UI 可拖动克隆 - 启动处理程序是否收到对被克隆元素的任何引用? 【发布时间】:2014-12-16 02:24:29 【问题描述】:

假设我正在克隆元素 DIV_1。

在可拖动的启动事件处理程序中,我需要选择除 DIV_1 之外的每个元素。

我觉得没有直接的方法可以做到这一点,所以我的计划是选择每个元素,然后循环遍历它们并消除作为克隆来源的那个。

但是没有办法从可拖动开始引用 DIV_1,我没有什么可以比较选定的元素。而且 ID 没有被克隆,所以我不能使用它。

(这是为了启用具有一些自定义行为的多拖/多克隆。没有过滤,当我克隆每个选定的元素时,我也会克隆刚刚克隆的元素。)

(我的后备计划是自己实现克隆,并简单地绕过可拖动的克隆,在这种情况下,不会有任何重复的克隆跑来跑去造成任何问题。)

【问题讨论】:

【参考方案1】:

啊,想通了。

首先,“event”参数至少包含三个有用的属性:target、currentTarget 和其他。循环遍历属性并吐出目标属性,直到找到对象将显示它们。它们根据其“id”属性引用原始元素。

所以“event.currentTarget.id”之类的。

但即使这样也没有必要。

我使用的是现有代码,该代码在 start 的“每个”处理程序中将“$(ui.helper).attr('id')”与“$(this).attr(“id”)' 进行比较。显然,该范围内的“this”指的是与启动处理程序的父范围内的“this”不同的东西。

所以当我将代码切换到克隆模式时,我错过了那个连接并感到困惑。

$(this).attr("id") 在启动处理程序的开头,即使在克隆期间,也会提供源的 ID,而不是 $(ui.helper).attr("id"),后者提供克隆的 ID。

我获得了该值并在“每个”处理程序中使用它,一切正常。

谢谢!

【讨论】:

以上是关于jQuery-UI 可拖动克隆 - 启动处理程序是不是收到对被克隆元素的任何引用?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery-UI 在 Re-Drag 上拖放和重新拖动克隆

jquery-ui-处理拖动位置Droppable,Draggable

动态创建jquery-ui可拖动句柄

jQuery-UI 可拖动和可放置项目变为不可拖动

JQuery-UI 可拖动项变为不可拖动

保存并加载动态创建的可拖动元素的位置(jQuery-UI)