2013-11-04 35 views
0

我有一個jquery的小問題,我想過濾我的購物車上的「項目」,這段代碼實際上是過濾但它只顯示「李」而不是他們的子項目,我的意思是隱藏一切,只顯示實際元素jquery搜索功能隱藏所有元素

我希望它沒有隱藏自己的 「孩子」 元素過濾, enter image description here

enter image description here

enter image description here

   <div class="section_wrapper"> 
        <ul id="prod_list"> 
         <li>         
          <a href="#" > 
           <div> 
            <h5>Asus Crossfire MotherBoard LGA 775</h5> 
            <div> 
             <ul> 
              <li>64 bits</li> 
              <li>Super</li> 
             </ul> 
            </div> 
           </div> 
          </a> 

         </li> 

jQuery代碼:

function search_filter() { 
    $('#busqueda').click(function() { 
     if ($(this).val() == "Buscar...") { 
      $(this).val(""); 
     } 
    }).blur(function() { 
     if ($(this).val() == "") { 
      $(this).val("Buscar..."); 
     } 
    }).on('input', function() { 
     busca = $(this).val(); 

     $("#prod_list li").each(function() { 
      var elem = $(this).children('a'); 
      var reg = new RegExp(busca, "i"); 
      if (reg.test(elem.text())) { 
       if ($(this).is(':hidden')) { 
        $(this).fadeIn('fast').css("display", "block");      
       } 

      } else { 

       $(this).fadeOut('fast'); 
      } 
     }); 
    }); 
} 
+1

如果你在HTML中隱藏父元素,它的所有子元素都將被隱藏。或者你的意思是別的嗎? – Orbling

+1

建議你創建jsfiddle.net進行現場演示,其複製的情況,其他人可以檢查 – charlietfl

+0

它現在固定的,謝謝PixMach! – Takami

回答

1

這可能是因爲在你有#prod_list li>系統> DIV> DIV> ul>李

而最後李時珍是失敗

if (reg.test(elem.text())) { 

所以漸漸淡出。你可以通過這樣做來解決這個問題

$("#prod_list > ul > li").each(function() { 

取而代之。

+0

非常感謝!這解決了我的問題! :D – Takami

+0

不客氣! – PixMach