jQueryUI的;如何使用draggable保留克隆上的选定索引

时间:2014-01-09 17:48:19

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

方案: 包含选择下拉列表的可拖动DIV元素 Draggable有一个克隆助手。 在下拉列表中选择一个选项。 拖动时,克隆帮助程序不会保留新选择的选项。相反,它使用在加载元素时选择的原始选项。

示例:

http://jsfiddle.net/eg3bv/1/

html代码:

<div class="master">
    <div class="draggable-container">

        <div class="select-container">
            <select class="select">
                <option value="value 1">Value 1</option>
                <option value="value 2">Value 2</option>
                <option value="value 3">Value 3</option>
            </select>
        </div>
    </div>

</div>

使用Javascript:

$( '.draggable-container' ).draggable({
    disabled: false,
    connectToSortable: ".sortable-container",
    helper: "clone",
    revert: "invalid",
    opacity: 0.35
});

预期行为:克隆帮助程序应保留新选择的选项

我在这一点上看到的唯一方法是向drag事件添加一个函数,该函数捕获原始元素的值,然后将该值应用于克隆。但是我的直觉告诉我,jQuery应该有一个设置来保持克隆与原始元素的更新保持同步。

示例:

http://jsfiddle.net/eg3bv/2/

$( '.draggable-container' ).draggable({
    disabled: false,
    connectToSortable: ".sortable-container",
    helper: "clone",
    revert: "invalid",
    opacity: 0.35,
     drag: function( event, ui ) {
         $( this ).find( '.select' ).each( 
             function(){ 
                 var indice = $( this ).val();
                 var u = ui.helper[0];
                 $( ui.helper[0] )
                 .find( '.select' ).each(         
                     function(){ 
                     $( this ).val( indice ); 
                 });
             });
     }
});

最后,当我通过拖动到不同的可排序元素来组合draggable和sortable时,删除的克隆将恢复为原始选择 - 即使我使用“drag”事件来更新克隆。

我可能只是在sortable上为更新创建了另一个函数,但这似乎是最长的路径。

问题:jQuery-ui draggable上是否有任何设置使克隆助手保留选择更改?

1 个答案:

答案 0 :(得分:0)

重复

Clone isn't cloning select values

  

经过进一步研究后,我在JQuery bug跟踪器中找到了这张票   解释错误并提供解决方法的系统。显然,   克隆选择值太昂贵,所以他们不会修复它。

     

http://dev.jquery.com/ticket/1294

因此,每种情况都需要特定的解决方法。