簡體   English   中英

jQuery和正則表達式需要幫助

[英]Jquery and Regex help needed

這是HTML

  <div id="taxonomylist">
  <div class="item-list"><ul><li class="first"><a href="/?q=category/activity/energy" class="views-processed">Energy</a></li>
<li><a href="/?q=category/activity/energy/3-5" class="views-processed">3-5</a></li>
<li><a href="/?q=category/activity/energy/6-8" class="views-processed">6-8</a></li>
<li><a href="/?q=category/activity/energy/k-2" class="views-processed">K-2</a></li>
<li><a href="/?q=category/activity/forestry" class="views-processed">Forestry</a></li>
<li><a href="/?q=category/activity/forestry/3-5" class="views-processed">3-5</a></li>
<li><a href="/?q=category/activity/forestry/6-8" class="views-processed">6-8</a></li>
<li><a href="/?q=category/activity/forestry/k-2" class="views-processed">K-2</a></li>
<li><a href="/?q=category/activity/mining" class="views-processed">Mining</a></li>
<li><a href="/?q=category/activity/mining/3-5" class="views-processed">3-5</a></li>
<li><a href="/?q=category/activity/mining/6-8" class="views-processed">6-8</a></li>
<li class="last"><a href="/?q=category/activity/mining/k-2" class="views-processed">K-2</a></li>
</ul></div></div>

我需要隱藏除div之外的所有元素。 我需要保留那個。 因此,對於正則表達式解析-我需要它僅顯示以下值:1.從任何內容開始2.然后具有以下結構:structure / activity /“此處有任何內容” /“此處無任何內容”上面的代碼。

我的邏輯流程1.隱藏特定div中的所有li元素2.如果li內的'a'元素包含等於/ title /的屬性href,則顯示此li元素。 我當前的代碼

$('li').css('display','none');
if ($('li').attr('href')=="*/activity/*/")
{
$('li').css('display','block');
}

如果我做類似的事情:

$('#div-id li').css('display','none');

那就行不通了。 我只是累了,但需要盡快完成工作。 請幫助。

我想你的意思是:

if ($('li').attr('href').match(/.*\/activity\/.*\/$/m)) {

使用James Padolsey的RegEx過濾器 ,我創建了這個jsfiddle來隱藏與您的模式不匹配的jsfiddle 除了RegEx過濾器外,相關代碼是

     $('a:regex(href, .*/activity/.*/.*)').closest('li').hide();

編輯:我改為.hide(); 來自設置了display:none的.each()。 一定要遲到了,不知道為什么我原本要走這么長的路:)

編輯2:將jsfiddle從版本7更新到版本9。

也許它可以解決您的問題:

$("div#div-id li").each(function() {
  var href = $("a", this).attr("href");
  if ( href.match(/^.*\/activity\/.*\/$/i) ) {
       alert($(this).text());
  }
});

在jsbin上查看演示: http ://jsbin.com/ozive4/2/edit

更新:這只是一個基本原則。 這是更完整的內容:

jQuery(function($) {
  function get() {
    $("div#div-id li").each(function() {
      var href = $("a", this).attr("href");
      if ( href.match(/^.*\/activity\/.*\/$/i) ) {
           alert($(this).text());
      }
    });
  }

  $("button").click(function() {
    get();
  });
});

和演示: http : //jsbin.com/ozive4/4/edit

更新:這是正則表達式:

/^.\/activity\/.[a-z,A-Z]$/i

以及新的演示: http : //jsbin.com/ozive4/6/edit

隱藏所有鋰除了這一點 ,你可以使用此代碼...

  $('div.div-class ul li').hide();


$(' ul li').each(function(){

    if($(this).text()=="THIS")
        $(this).show();

});

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM