gpt4 book ai didi

jquery - 拖动/克隆时,.draggable() id 会从
  • 中删除
  • 转载 作者:行者123 更新时间:2023-12-01 04:17:18 25 4
    gpt4 key购买 nike

    我最近被迫升级:

    • jQuery 从 1.7.1 到 1.8.3
    • jQueryUI 从 1.8.9 到 1.9.2

    (我被迫升级以便与 Blueimp 的 jQuery 文件上传的最新版本兼容。)

    我有以下代码,在(1.7.1/1.8.9)下完美运行

    $( "div.archive li" )
    .draggable({ // make the archive-icons draggable and connect to the album(s)
    connectToSortable: handleSortable, // ,"#album_45 ul", //
    helper: "clone", // (helper must be set to 'clone' in order to work flawlessly),
    revert: "invalid",
    appendTo: "body"})

    sortableUL.sortable({
    helper: 'clone',
    appendTo: "body",
    update : function () {
    var serializedSequence = sortableUL.sortable('serialize'); // Fails in jQueryui/1.8.21 !!
    $.ajax({
    url: "/callback/upAlbum",
    type: "post",
    data: serializedSequence,
    success: function(htmlData){
    sortableUL.html(htmlData);
    recursiveSortable(albumID, joPanel); // once the newly ordered zone-album has been read, recurse back to: make list sortable & slidable
    }
    }); // END $.ajax
    } // END update : function ()
    });

    上面的代码在旧版 jQuery 和 jQueryUI 下工作正常,但在新版本下失败。如果我降级回旧版本,代码将再次工作(但是我的 jQuery FileUploader 将无法工作!)。

    新设置中不会生成任何错误消息。然而,出现了以下场景:

    可拖动的列表项是 <li id="icon_1234"> 。当这些被放入 .sortable() ,它们被接受。因此,他们成为<li>.sortable() <ul> 。然而,当时的id="icon_1234"被删除。 <li>的其他属性留在原地。

    更新:事实上 id="icon_1234"<li>被删除时附加到<body> ,所以.droppable()显然不是问题的原因。但是,注释掉 appendTo:选项并不能改变问题。

    当然,没有id="icon_1234" ,新删除的<li>以下声明无效:

    var serializedSequence = sortableUL.sortable('serialize');

    因此,在更新回调之后,新删除的 <li>.sortable()消失列表。

    我真的不知道如何解决这个问题......

    最佳答案

    好吧,让我分享一下我的发现,以及我一路上所忍受的投石器和箭。

    据我了解,jQuery UI 大神consider删除id来自draggable当落入sortable时成为一个特色。看来这是在 1.8.9 和 1.9.2 之间引入的。

    原因是人们不想要重复的 ID。如果是这样,.sortable('serialize')方法不应查找 id=""但对于<li>的一些其他属性。 (但是,默认情况下,序列化方法会继续查找 id 。)

    所以,这是我的解决方法。您的列表项过去看起来像这样:

    <li id="foo_123">

    我们需要向这些 <li> 添加一个属性的:

    <li id="foo_123" bar="foo_123">

    接下来,我们指示序列化方法查找新属性,而不是 id:

    var serializedSequence = $('#sortableUL').sortable('serialize',{
    key: 'foo',
    attribute: 'bar'
    });

    这应该可以解决问题。然而,就我而言,还有一根吊索/箭头。 serialize方法未生成正确序列化的数组。 (我不知道为什么,但我不能在这个功能上浪费更多时间。)因此,我需要添加:

    serializedSequence = serializedSequence.replace(/=/g,"[]=");

    更新:这里是a fiddle其他人提出了类似的解决方案。

    希望这有帮助......

    关于jquery - 拖动/克隆时,.draggable() id 会从 <li> 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com