这是一个简单的问题,但是,我似乎并没有想出如何做到这一点:
我有一个滑块过滤一些东西
$("#price").slider(
{
range: true,
step: 5,
change: function(e,ui) {
$('total').filter(function(index) {
return ( ($("#price").slider("values", 0)) <= $(this).text() <=
($("#price").slider("values", 1)));
}).parents('div.item').hide();
}
});
基本上,我想要一个数组,其中包含已经过滤的每个元素的索引,因此我可以将它们重用于其他目的。我正在考虑将过滤器功能编辑为:
$('total').filter(function(index) {
var matches = ( ($("#price").slider("values", 0)) <= $(this).text() <=
($("#price").slider("values", 1)));
return matches;
}.myFunction(matches){
//do some stuff here with matched elements
}
这是不正确的,非常感谢您的帮助。
答案 0 :(得分:2)
评论更新:您可以使用.map()
执行此操作,如下所示:
change: function(e,ui) {
var self = $(this);
var indexes = [];
$('.total').filter(function(index) {
var txt = $(this).text();
if (self.slider("values", 0) <= txt && txt <= self.slider("values", 1))
{
indexes.push(index);
return true;
}
}).parents('div.item').hide();
//do something with indexes array
}
答案 1 :(得分:0)
以下是我正在处理的完整代码:
$("#price").slider(
{
range: true,
step: 5,
change: function(e,ui) {
$('span.the_total').filter(function(index) {
return ( ($("#price").slider("values", 0)) <= $(this).text() <= ($("#price").slider("values", 1)));
}).parents('div.item_hotel').show();
$('span.the_total').filter(function(index) {
return ( ($("#price").slider("values", 0)) > $(this).text() );
}).parents('div.item_hotel').hide();
$('span.the_total').filter(function(index) {
return ( ($("#price").slider("values", 1)) < $(this).text());
}).parents('div.item_hotel').hide();
}});