2013-01-24 93 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

相关问题