2013-04-16 65 views
2

我是jQuery的新手,需要帮助。我得到这个代码,工作正常:问题listfilter只在某些css类

<script> 
    (function ($) { 
     // custom css expression for a case-insensitive contains() 
     jQuery.expr[':'].Contains = function(a,i,m){ 
      return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0; 
     }; 

     function listFilter(header, list) { // header is any element, list is an unordered list 
      // create and add the filter form to the header 
      var form = $("<form>").attr({"class":"filterform","action":"#"}), 
      input = $("<input>").attr({"class":"filterinput","type":"text"}); 
      $(form).append(input).appendTo(header); 

      $(input).change(function() { 
       var filter = $(this).val(); 
       if(filter) { 
        // this finds all links in a list that contain the input, 
        // and hide the ones not containing the input while showing the ones that do 
        $(list).find("a:not(:Contains(" + filter + "))").parent().slideUp(); 
        $(list).find.hasClass(Lot) + ("a:Contains(" + filter + ")").parent().slideDown(); 
       } else { 
        $(list).find("li").show(); 
       } 
       return false; 
      }).keyup(function() { 
       // fire the above change event after every letter 
       $(this).change(); 
      }); 
     } 

     //ondomready 
     $(function() { 
      listFilter($("#header"), $("#list")); 
     }); 
    }(jQuery)); 
</script> 

</head> 
    <body> 
     <div id="wrap"> 
      <h1 id="header">List of countries</h1> 
      <ul id="list"> 
       <li> 
        <p class="Lot">1001</p> 
      <p class="Desc para-style-override-1"> 
         KARMAPA. Tibet, 19./20. Jh. H 14,8 cm.<br>Bronze. 
         Sitzender Lama in dhyanasana auf Lotosthron. Mit seiner rechten Hand 
         ruft er die Erde als Zeugin an, während die Linke in Meditationsgestus 
         ein Wassergefäss hält. Gewand mit eingraviertem Blumendekor. 
        </p> 
      <p class="Footnote para-style-override-1"> 
         Carl Laszlo collection, Basel. 
        </p> 
      <p class="LotEst para-style-override-1">CHF 1 000.-/1 500.-</p> 
      <p class="Est2 para-style-override-1">(€ 830.-/1 250.-) </p> 
       </li> 
       <li> 
        <p class="Lot">1002*</p> 
      <p class="Desc para-style-override-1"> 
         KLEINER AMITAYUS. Tibetochinesisch, 18./19. Jh. H 11 cm.<br>Bronze. 
         Der Buddha des ewigen Lebens sitzt in der Lotoshaltung auf einem 
         Doppellotosthron. Fein gestaltetes Gesicht. Unverschlossen. Min. besch. 
        </p> 
      <p class="LotEst para-style-override-1">CHF 500.-/800.-</p> 
      <p class="Est2 para-style-override-1">(€ 420.-/670.-)</p> 
       </li> 
      </ul> 

我只想内p class="Lot"过滤电话号码,但显示整个li。我试过.hasClass,但没有奏效。谢谢你的帮助。

回答

0
$(list).find.hasClass(Lot) 

无法正常工作。没有地段变量定义;-)

尝试

$(list).find.hasClass("Lot") 

最简单的方法通过使用jQuery类选择元素是

$('.Lot',list); 

你可以结合起来:

$(".Lot:Contains(" + filter + ")", list).parent().slideDown(); 

编制:http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery

+0

谢谢,但我如何结合类和输入? $(list).find.hasClass(“Lot”)+(“a:Contains(”+ filter +“)”)。parent()。slideDown(); – user2286162

+0

编辑答案。你应该阅读一些教程,并更好地理解jQuery,你的代码是很难读的。 –