有关jquery可排序连接列表的帮助

时间:2011-04-03 13:29:26

标签: jquery-ui-sortable

以下是我的代码的完整副本:jsFiddleCode

正如您所看到的,我有两个可排序的连接列表,当一些项目被删除时,它们分别执行 subFunction unsubFunction 的函数。现在,我还有用于双击其中一个项目的代码,然后将它们放在相反的列表中(函数 switchLists()负责处理。

现在,我想在这里完成的行为与拖放项目时的行为相同(警告框出现并准确说明(例如):&#34;项目6刚刚接下来&#34;。< / p>

我缺乏理解是,当调用函数 subFunction 时,我可以使用 ui ,而不是在调用 switchLists <时/ em>的。 (我确实尝试将 ui 添加到 switchLists 的调用中,如下所示:

switchLists(e, ui){  
  //same code as before...

  //this code doesn't execute
  var itemText= ui.item.text();
  alert(itemText + " just subed");  
}

但我在Firefox中的FireBug中出现错误,说ui未定义。

您可以自由编辑小提琴上的代码并将其作为链接发布在此处。

作为一个更普遍的问题:jquery如何将变量传递给其他函数?我的意思是,代码:

receive: subFunction  
没有任何参数调用

,那么subFunction如何获取事件和ui?如果你有一些关于这一切的好教程,那就很感激了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

经过漫长的一天玩这个后,我终于找到了答案并做到了这样:jsFiddle link

简而言之,我将前一个函数分离为两个函数,我还阅读了一些关于jQuery的内容,并发现在函数中我可以执行$(this),因此访问元素的文本。

好的,仅供参考,整个代码在这里:

$(function() {
    $( "#sortable1" ).sortable({
        connectWith: ".connectedSortable",          
        receive: subFunction
    });     

    $( "#sortable2" ).sortable({
        connectWith: ".connectedSortable",          
        receive: unsubFunction
    });     

    $(".ui-state-default").dblclick(function() {
        $(this).removeClass().addClass("ui-state-highlight");           

        var litem = $(this).clone();
        litem.appendTo($('#sortable2'));
        $(this).remove();

        $.jGrowl($(this).text() + " successfully unsubed!", {header:"Subscription Status", life: 1000});
    });

    $(".ui-state-highlight").dblclick(function() {
        $(this).removeClass().addClass("ui-state-default");         

        var litem = $(this).clone();
        litem.appendTo($('#sortable1'));
        $(this).remove();

        $.jGrowl($(this).text() + " successfully subed!", {header:"Subscription Status", life: 1000});          
    });     

    function subFunction(event, ui) {
        ui.item.toggleClass("ui-state-default");
        ui.item.toggleClass("ui-state-highlight");

        $.jGrowl(ui.item.text() + " successfully subed!", {header:"Subscription Status", life: 1000});
    }

    function unsubFunction(event, ui) {
        ui.item.toggleClass("ui-state-default");
        ui.item.toggleClass("ui-state-highlight");

        $.jGrowl(ui.item.text() + " successfully unsubed!", {header:"Subscription Status", life: 1000});
    }

});