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 上拖放和重新拖动克隆