2012-03-17 97 views
0

此問題是jQuery Multiple Checkbox Page Filter的擴展。這是我的問題。回覆:jQuery多重複選框頁面過濾器

我有三個目標:

  • 我想有複選框列表過濾頁面內容。
  • 我想只返回匹配所有當前選中的 框的內容,隱藏其餘所有內容。
  • 如果沒有選中框,則應顯示所有內容 。

正如先前在上面的問題的討論,目標A和C與被實現:

$('div.tags').delegate('input:checkbox', 'change', function() 
{ 
    var $lis = $('.results > li').hide(); 
    //For each one checked 
    $('input:checked').each(function() 
    { 
      $lis.filter('.' + $(this).attr('rel')).show(); 
    });  
}); 

和目標B與實現:

var selector = $('input:checked').map(function() 
{ 
    return $(this).attr('rel'); 
}).get().join('.'); 
$lis.filter(selector).doWhatever(); 

但我不知道如何將這兩個腳本集成在一起?

回答

0

給這一個鏡頭:http://jsfiddle.net/mattball/tkLK6/

$('div.tags').delegate('input[type=checkbox]', 'change', function() 
{ 
    var $lis = $('.results > li'), 
     $checked = $('input:checked'); 

    if ($checked.length) 
    { 
     var selector = $checked.map(function() 
     { 
      return '.' + $(this).attr('rel'); 
     }).get().join(''); 

     $lis.hide().filter(selector).show();  
    } 
    else 
    { 
     $lis.show(); 
    } 
}); 
+0

我在瞭解在http://jsfiddle.net/gd276/7/到目前爲止,還沒有工作的邏輯採取了一槍。 我已經在http://www.dfs.co.uk/sofas/leather-sofas/看到了我想要做的,但是你的代碼要簡單得多。 我不認爲我會佔據一個列表,通過複選框A對其進行精煉,然後通過複選框B將剩餘列表和精煉完成。 讓我知道如果我試圖做的是大量的腳本。 – user1272827 2012-03-17 15:17:56

+0

jsFiddle =非常有用。看我的編輯。 – 2012-03-17 15:33:14

+0

謝謝!這完美,完全符合我的需求。非常感謝。 – user1272827 2012-03-19 22:00:34