要么我在这里犯了一个非常愚蠢的错误,要么jQuery的.add
方法存在错误。很可能是前者。
我正在尝试实现可以选择的项目列表。这是我的code on jsfiddle。
失败的测试用例如下:
Ctrl
)。现在,我希望第一个和第二个被取消选择,我相信实现也会这样做。但第二个没有被取消选择。
挖掘一点,似乎.add
实际上并没有将我的元素添加到jQuery对象集中,对于我的生活,我无法弄清楚原因。
对此有何建议?或者这不是.add
方法应该使用的方式吗?
编辑:我知道jquery-ui可以控制这种事情,但我已经对它进行了评估,但它对我不起作用。感谢。
答案 0 :(得分:3)
.add
返回一个新的jQuery对象,因此您需要获取返回的值。
prevSelections = prevSelections.add(...);
以下是其他一些清理:
var ps = $(),
clazz = 'selected';
$('#list').delegate('li', 'click', function(e) {
if (e.ctrlKey) {
ps = ps.add($(this).toggleClass(clazz));
} else {
if (ps.length) {
ps.removeClass(clazz);
}
ps = $(this).addClass(clazz);
}
});
答案 1 :(得分:1)