使用YUI事件监听器在Jquery中移动DOM元素
Moving a DOM element in Jquery with YUI event listeners?
我有一个DOM元素,它的元素上有YUI事件监听器。我试图让DOM元素出现在页面的不同部分,但是一旦这样做,似乎就会丢失在YUI中设置的事件。有人知道怎么解决这个问题吗?
我也面临同样的问题。我有两个YUI和jQuery在同一个应用程序,因为它是一个以前存在的应用程序最初与YUI和我试图使用jQuery实现一个功能,这是更容易实现与jQuery。
根据我的经验,您不应该仅仅通过移动元素而丢失YUI事件:jQuery("#element1").before(jQuery("#element2"));
另一方面,如果您尝试克隆和交换元素,即使使用clone函数和克隆事件的参数也会出现问题:
var copy_to = $(to).clone(true);
var copy_from = $(this).clone(true);
$(to).replaceWith(copy_from);
$(this).replaceWith(copy_to);
根据这一点,我想说它是不可能克隆元素保存事件绑定使用YUI,但它是可能的移动它们。
编辑:这就是我如何移动和交换两个绑定了YUI事件的DOM元素:
function makeElementAsDragAndDrop(elem) {
$(elem).draggable({
//snap : '#droppable',
snapMode : 'outer',
revert : "invalid",
helper: function(event) { // This is a fix as helper: "original" doesn't work well
return $(this).clone().width($(this).width());
},
zIndex : 100,
handle: ".title"
});
$(elem).droppable({
//activeClass : "ui-state-hover",
//hoverClass : "ui-state-active",
drop : function(event, ui) {
var sourcePlaceholder = $( "<div/>",
{
id: "sourcePlaceholder"
}).insertBefore(ui.draggable);
var targetPlaceholder = $( "<div/>",
{
id: "targetPlaceholder"
}).insertBefore(this);
$(ui.draggable).insertBefore(targetPlaceholder);
$(this).insertBefore(sourcePlaceholder);
sourcePlaceholder.remove();
targetPlaceholder.remove();
},
tolerance : "pointer"
});
}
如您所见,上面的代码是我使用jQuery编写的div拖放实现的一部分。
希望有帮助。
PS:如果有人知道如何克隆元素保存事件绑定使用YUI,请让我们知道!相关文章:
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 当DOM节点在DOM中移动时,如何阻止Firefox触发mouseleave
- 如何缓慢移动DOM元素
- 在调整大小和加载时移动 DOM 元素.仅适用于调整大小
- 在循环中移动dom元素
- 使用AngularJS在Bootstrap选项卡之间移动DOM元素
- 在jQuery中移动DOM元素(图层滑块)
- 删除的DOM元素仍然显示在移动safari(iOS 5.1)中
- 在不移动DOM的情况下最大化Div
- Cordova/PhoneGap从移动文件file:///var/mobile/Applications/到dom允许的
- 移动项在DOM中的位置
- jQuery UI 工具提示在源 DOM 元素移动时卡住打开
- 将表单元素向上移动 DOM 并使其包装较低的元素
- 根据包含的链接移动DOM中的元素
- 使用jQuery移动DOM中的元素
- KnockOut绑定在移动DOM元素后中断
- 不能移动DOM元素到其他位置
- jQuery移动DOM页面重用
- 移动DOM元素的方法
- 使用YUI事件监听器在Jquery中移动DOM元素