【问题标题】:jquery clone doesn't seem to retain draggable/droppable eventsjquery clone 似乎没有保留可拖动/可放置的事件
【发布时间】:2011-04-03 16:52:45
【问题描述】:

我有一行可以将项目拖入其中并对其进行排序。这一切正常。我什至在每个项目上都有一个删除事件,因此可以将其从行中删除。

我想要一个可以克隆行的选项。我通过使用下面的克隆函数来做到这一点:

clonedrow = $("#row1").clone(true);
clonedid = "row"+nextRowNumber; //nextRowNumber is a variable calculated by counting the rows that exist already.
clonedrow.attr("id",clonedid).insertAfter("#row1");

除了“row1”中的可拖动/可排序事件没有复制到克隆行之外,这一切都有效。难道我做错了什么?我认为通过添加“真”它会复制事件...?

FWIW 加载页面时,我有一个自动构建第一行的函数,并将可拖动/排序/删除事件应用于它...

【问题讨论】:

    标签: jquery events clone draggable jquery-ui-sortable


    【解决方案1】:

    我对draggable了解不多,但是用true克隆一个draggable元素时似乎有一些奇怪的行为。也许您希望克隆所有data,如果其中一些应该特定于该元素。

    在这个简单的例子中,当你clone(true)一个并尝试拖动克隆时,原来的被拖动了。

    http://jsfiddle.net/ZmcHd/

    也许最好重新申请draggable()

    clonedrow = $("#row1").clone().draggable();
    

    http://jsfiddle.net/ZmcHd/1/

    如果您需要其他设置,那么我会将它们存储在一个变量中以防止重复。

    var settings = {
            // some settings
    }
    
    clonedrow = $("#row1").clone().draggable(settings);
    

    【讨论】:

    • 谢谢帕特里克!这有很大帮助:) 我不认为你可以看看我的另一个查询?将不胜感激 - stackoverflow.com/questions/3549631/…
    • @WastedSpace - 不客气。我很乐意看看另一个,但我现在不能。我稍后再回来看看。 :o)
    • @WastedSpace - 抱歉,看看另一个。不知道问题的原因是什么。怕我帮不上什么忙。 :o(
    • 好的,没问题。无论如何,谢谢你看看。这真的很奇怪,因为我还发现了 2 个其他人的拖放面板示例(类似于 google 主页),而且他们有完全相同的问题......我想回到绘图板......
    【解决方案2】:

    如果 clone 传递了 true 参数,则 jQuery 复制事件和数据。为了测试事件是否已经通过,请查看元素数据的 events 属性http://www.jsfiddle.net/zfSrR/1/

    console.log($("#row1").data('events'));
    console.log($(clonedrow).data('events'));
    

    【讨论】:

    • Ayaz - 您不能使用 .live() 来应用插件行为。只有 DOM 事件。 :o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多