以下是我的代码的完整副本: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?如果你有一些关于这一切的好教程,那就很感激了。
感谢您的帮助。
答案 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});
}
});