我在理解链接方面遇到了问题。我有这段代码:
groups.appendTo(this.selectedList.add(this.availableList));
最初,selectedList
和availableList
都相同,并且包含带有ul
个元素的HTML li
。 groups
是具有4个ul
元素的另一个li
。完成后,this.selectedList
和this.availableList
都已修改,并包含新的列表项。
这是如何工作的,add
究竟在做什么?它不会将可用列表的内容添加到选定列表中。我还以为add
返回了一个临时对象?为什么这个代码比以下更好:
groups.appendTo(this.AvailableList);
groups.appendTo(this.selectedList);
感谢。
修改的
背景是:
(function($) {
$.widget("ui.multiselect", {
options: {...},
_func: function() {
... local 'this':
groups.appendTo(this.selectedList.add(this.availableList));
}
});
})(jQuery);
答案 0 :(得分:1)
链接的好处在于您不必多次执行选择,从而获得性能。所有jQuery函数(插件也将)返回选择(有些将返回更改的选择),因此您可以在链中添加另一个方法,如:
$('.classIHaveUsedVeryOften').append(foo).hide().addClass('bar');
如果你愿意写:
$(.classIHaveUsedVeryOften).append(foo);
$(.classIHaveUsedVeryOften).hide();
$(.classIHaveUsedVeryOften).addClass('bar');
jQuery必须三次检索所有匹配元素。如果你有大型DOM结构,实际上这可能需要相当长的时间(即不要这样做)。
处理此问题的另一种可能性是事先将您的选择放入变量中:
var $mySelection = $(.classIHaveUsedVeryOften);
$mySelection.append(foo);
$mySelection.hide();
$mySelection.addClass('bar');