jQuery if if else else filter
我有一个过滤器,并使用这个脚本的过滤器。jQuery if if else else filter
filteredData = filteredData.filter(function() {
var elm = $(this),
price = parseInt('0' + elm.attr('data-price'), 10) || 0;
if ($(price < 15)) {
return !(250 <= price);
} else {
return !(sliderData <= price);
}
});
但是有什么不对。价格值是15或更多。但是代码永远不会进入else结构。
尝试取出来自该行的$()
函数调用:
if ($(price < 15)) {
它应该是:
if (price < 15) {
的$()
函数返回一个对象,所有的对象都是“truthy”因此,这段代码会始终进入if
块,而不是else
块。
(顺便说一下,假设你解决上述问题,if
分支内要返回!(250 <= price)
永远是true
因为price
将< 15
表达,所以你还不如干脆说return true;
在这一点上。)
谢谢,您能举一个修复的例子上述问题。现在我把它设置为if(价格 2012-07-10 06:05:17
我不明白你在这个评论中问什么。如果价格值恰好为15,那么将会转到'else'分支,因为15不小于15。 – nnnnnn 2012-07-10 06:14:53
我觉得你的if
声明有些不合适。
filteredData = filteredData.filter(function() {
var elm = $(this),
price = parseInt('0' + elm.attr('data-price'), 10) || 0;
if (price < 15) {
return !(250 <= price);
} else {
return !(sliderData <= price);
}
});
这会有所帮助。
看来你已经把 '$' 选择意外:
尽量只: 如果(价格< 15){ (...)
你'if'实际上是评估一个jQuery对象( '$(...)') - if检查中的任何非空/非falsey值将导致检查通过,if中的代码将被评估 – n*s 2012-07-10 05:56:35