我的HTML,
<div id="fullcontainer">
<div id="a">a</div>
<div id="b">b</div>
<div id="c">c</div>
</div>
JS,
var cache = $('#fullcontainer').children();
var index = cache.length - 2;
cache.filter(':lt('+ index +')').remove();
我上面给出的代码正常工作正常,因为我已经在一个单独的变量中缓存了长度,但是下面没有缓存的代码不起作用,
var cache = $('#fullcontainer').children();
cache.filter(':lt('+ cache.length - 2 +')').remove();
据我所知,应该首先评估最后一级的表达式,但我不知道上面的代码会发生什么,请提供建议并提供一些解释。
答案 0 :(得分:2)
如果您将cache.length - 2
括在brackets
中,
cache.filter(':lt('+ (cache.length - 2) +')').remove();
答案 1 :(得分:2)
您的代码cache.filter(':lt('+ cache.length - 2 +')').remove();
会被评估为
cache.filter('NaN)').remove();
应该是
cache.filter(':lt('+ (cache.length - 2) +')').remove();
答案 2 :(得分:2)
您需要将值包装在方括号( )
中,以使其评估为数字:
cache.filter(':lt('+ (cache.length - 2) +')').remove();
<强> Updated Fiddle 强>