Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui jquery ui排序表连接列表:复制项_Jquery Ui_Jquery Ui Sortable - Fatal编程技术网

Jquery ui jquery ui排序表连接列表:复制项

Jquery ui jquery ui排序表连接列表:复制项,jquery-ui,jquery-ui-sortable,Jquery Ui,Jquery Ui Sortable,我有两个列表,我希望它们都是可排序的,并且能够将项目从列表1复制(拖动)到列表2,反之亦然 是我想要的,但项目是移动的,而不是复制的。 我做了一些关于可拖动和可拖放的实验,但我无法让它们保持可排序。例如:好这里是我的应用程序;两个图像列表,可排序,您可以从连接的列表复制。 如果目标中已存在项目,则该项目将被禁用。 希望对某人有用 这里有个问题: CSS: JS: HTML: 相册 最爱 我必须说,菲什对此的回答对我帮助很大 我有一个建议;如果列表不断更改,moused

我有两个列表,我希望它们都是可排序的,并且能够将项目从列表1复制(拖动)到列表2,反之亦然

是我想要的,但项目是移动的,而不是复制的。
我做了一些关于可拖动和可拖放的实验,但我无法让它们保持可排序。例如:

好这里是我的应用程序;两个图像列表,可排序,您可以从连接的列表复制。
如果目标中已存在项目,则该项目将被禁用。
希望对某人有用

这里有个问题:

CSS:

JS:

HTML:


相册
最爱

我必须说,菲什对此的回答对我帮助很大

我有一个建议;如果列表不断更改,mousedown事件似乎会被多次调用,因为所有子对象上都重新注册了该事件。这可能有点混乱,但我添加了一个unbind first,以确保mousedown事件只调用一次

    $(".album li").mousedown(mStart);

$("ul, li").disableSelection();

$(".album, .favorites").sortable({
    connectWith: ".album, .favorites",
    placeholder: "placeholder", 
    forcePlaceholderSize: true, 
    revert: 300,
    helper: "clone",
    stop: uiStop,
    receive: uiReceive,
    over: uiOver
});


$(".album li").mousedown(mStart);

var iSender, iTarget, iIndex, iId, iSrc, iCopy;
var overCount = 0;

/* everything starts here */
function mStart() {
    // remove any remaining .copy classes
    $(iSender + " li").removeClass("copy");

    // set vars
    if ($(this).parent().hasClass("listing")) { iSender = ".listing"; iTarget = ".favorites"; } 
    else { iSender = ".favorites"; iTarget = ".listing"; }
    iIndex  = $(this).index();
    iId     = $(this).attr("id");
    iSrc    = $(this).find("img").attr("src");  
    iCopy   = $(iTarget + " li img[src*='" + iSrc + "']").length > 0; // boolean, true if there is allready a copy in the target list   

    // disable target if item is allready in there  
    if (iCopy) { $(iTarget).css("opacity","0.5").sortable("disable"); }
}

/* when sorting has stopped */
function uiStop(event, ui) {
    // enable target
    $(iTarget).css("opacity","1.0").sortable("enable");

    // reset item vars
    iSender = iTarget = iIndex = iId = iSrc = iCopy = undefined;
    overCount = 0;

    // reinit mousedown, live() did not work to disable
    $(".album li").mousedown(mStart);
}

/* rolling over the receiver - over, out, over etc. */
function uiOver(event, ui) {
    // only if item in not allready in the target
    if (!iCopy) {                   
        // counter for over/out (numbers even/uneven)
        overCount++;
        // if even [over], clone to original index in sender, show and fadein (sortables hides it)
        if (overCount%2) {
            if (iIndex == 0) { ui.item.clone().addClass("copy").attr("id", iId).prependTo(iSender).fadeIn("slow"); } 
            else { ui.item.clone().addClass("copy").attr("id", iId).insertAfter(iSender + " li:eq(" + iIndex + ")").fadeIn("slow"); }
        } 
        // else uneven [out], remove copies
        else { $(iSender + " li.copy").remove(); }
    } 
    // else whoooooo
}

/* list transfers, fix ID's here */
function uiReceive(event, ui) {
    (iTarget == ".favorites") ? liPrefix = "fli-" : liPrefix = "lli-";  
    // set ID with index for each matched element
    $(iTarget + " li").each(function(index) {
        $(this).attr("id", liPrefix + (index + 1)); // id's start from 1
    });
}
<div class="page">

    <div class="container">
        <h2>Photo Album</h2>
        <ul class="listing album">
            <li id="li-1"><img src="tn/001.jpg" /></li>
            <li id="li-2"><img src="tn/002.jpg" /></li>
            <li id="li-3"><img src="tn/003.jpg" /></li>
            <li id="li-4"><img src="tn/004.jpg" /></li>
            <li id="li-5"><img src="tn/005.jpg" /></li>
        </ul>
    </div>

    <div style="clear:both;"></div>

    <div class="container">
        <h2>Favorites</h2>
        <ul class="favorites album">
            <li id="fli-1"><img src="tn/001.jpg" /></li>
            <li id="fli-2"><img src="tn/002.jpg" /></li>
            <li id="fli-3"><img src="tn/010.jpg" /></li>
        </ul>
    </div>

</div>
    $(".album li").mousedown(mStart);
    $(".album li").unbind('mousedown', mStart).mousedown(mStart);