要么我在这里犯了一个非常愚蠢的错误,要么jQuery的.add方法存在错误.最有可能是前者.
我正在尝试实现可以选择的项目列表.这是我的code on jsfiddle.
失败的测试用例如下:
>单击第一个元素以将其选中.
>按住Ctrl键并单击第二个元素以将其选中.
>然后单击第三个元素(不使用Ctrl).
现在,我希望第一个和第二个被取消选择,我相信实现也会这样做.但第二个不会被取消选择.
挖掘一点,似乎.add实际上并没有将我的元素添加到jQuery对象集中,对于我的生活,我无法弄清楚为什么.
有什么建议吗?或者这不是.add方法应该被使用的方式?
编辑:我知道jquery-ui可以控制这种事情,但我已经对它进行了评估,但它对我不起作用.谢谢.
解决方法
.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); } });