2011-09-06 42 views
0

我似乎無法找出什麼我做錯了用下面的代碼:的jQuery選擇器不使用。數據

  $('#side_categories #sourcestoggle ul#side_categories_prog .showonly').click(function() { 
     var cattest2 = $(this).data('dealcat'); //get the category from the clicked button 
     $('#listings .deal:not(:has(.deal[data-dealcat*="' +cattest2+ '"]))').addClass('filtered'); 
     $('#sourcestoggle ul#side_categories_prog li .check_box input:not([data-dealcat*="' +cattest2+ '"]').removeAttr('checked'); 
     $('#listings .deal[data-dealcat*="' +cattest2+ '"]').removeClass('filtered'); 
     $('#dealcount .counter #showingval').html(parseInt($('#listings .deal:visible').size())); 
     }); 

它的工作原理基於數據dealcat只顯示所選類別,但它也取消所有複選框,我似乎無法弄清楚如何保持當前複選框被選中。由於我是jquery(一般編碼)的新手,我很確定代碼是相當草率的,但它仍然適用於大多數情況,只是具有「唯一」鏈接的複選框不會保持檢查狀態。

謝謝大家提前!

編輯:上面的代碼現在保持第一個複選框,但是當你點擊其他的時候它什麼也不做。

+0

我的意思是通過什麼「什麼都不做」,這意味着複選框不改變,功能做的,例如,來源1 [只有]被點擊時,所有的人都會被隱藏,源1將保持其複選框。如果您在之後點擊source2 [only],它會正確更改顯示的列表,但所有複選框都會被清除,包括source2。 – Mike

回答

1

試試這個

$('#side_categories #sourcestoggle ul#side_categories_prog .showonly').click(function() { 
     var cattest2 = $(this).data('dealcat'); //get the category from the clicked button 
     var checked = $('#sourcestoggle ul#side_categories_prog li .check_box input.deal[data-dealcat*="' +cattest2+ '"]').is(':checked'); 

     $('#listings .deal:not(:has(.deal[data-dealcat*="' +cattest2+ '"]))').addClass('filtered'); 

     $('#sourcestoggle ul#side_categories_prog li .check_box input:not(.deal[data-dealcat*="' +cattest2+ '"])').removeAttr('checked'); 

     $('#sourcestoggle ul#side_categories_prog li .check_box input.deal[data-dealcat*="' +cattest2+ '"]').attr('checked', checked); 

     $('#listings .deal[data-dealcat*="' +cattest2+ '"]').removeClass('filtered'); 
     $('#dealcount .counter #showingval').html(parseInt($('#listings .deal:visible').size())); 
     }); 
+0

在第一次點擊,第一個來源仍然被檢查,但如果其他人被點擊,列表被正確過濾,但不會對複選框進行更改。我也必須做一些修改,從輸入中刪除.deal,因爲當我最初粘貼它時錯誤了。 – Mike

+0

我改變了.attr('checked',checked); - > .attr('checked',+ checked);它的工作原理! – Mike

+0

任何原因爲什麼這將工作在Firefox和不Safari瀏覽器? – Mike