2013-01-24 60 views
0

我試圖切換特定的元素選擇。我想隱藏基於選擇的元素,然後顯示那些完全相同的元素。我試圖使用此代碼,但行不「顯示」,因爲它似乎重新檢查哪些是可見的。存儲特定的元素以便稍後操作

jQuery(function($){ 
     $('input[id^=_cmb_api_use_defaults_]').click(function(){ 
       var $rows = $(this).parents('tr:first').nextAll('tr:visible'); 
       if($(this).is(':checked')){ 
         $rows.hide(); 
       } else { 
         $rows.show(); 
       } 
     }); 
}); 

如何存儲這些特定元素,以便我可以在以後操作完全相同的錶行?

+0

請創建http://jsfiddle.net/演示,讓您的問題更容易理解。你是什​​麼意思*「似乎重新檢查哪些是可見的」*? –

+0

我看不到一些HTML,但我懷疑''.parents()'沒有做你期望的。 [考慮使用'.closest()'代替](http://api.jquery.com/closest)。 – Blazemonger

回答

0

只需使用函數外部聲明的變量:

jQuery(function($){ 
     $('input[id^=_cmb_api_use_defaults_]').each(function(i, input) { 
      var $rows = $(input).parents('tr:first').nextAll('tr:visible'); 
      $(input).click(function() { 
        if($(this).is(':checked')){ 
          $rows.hide(); 
        } else { 
          $rows.show(); 
        } 
      }); 
     }); 
}); 
+0

謝謝。不知道爲什麼我爲此而掙扎。現在我看到了這個解決方案的總體意義。 – solepixel

相關問題