Jquery和Regex需要帮助

时间:2011-02-04 03:03:23

标签: jquery regex

这是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.然后有结构:结构/活动/“任何在这里”/“没有在这里” 你可以通过查看上面的代码来了解我的意思。

我的逻辑流程 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');

然后它不起作用。 我只是累了,但需要尽快完成工作。求助。

4 个答案:

答案 0 :(得分:2)

我认为你的意思是:

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

答案 1 :(得分:2)

使用James Padolsey's RegEx filter,我创建了隐藏与您的模式不匹配的this jsfiddle。除RegEx过滤器外,相关代码为

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

编辑:我改为.hide();来自设置display:none的.each()。一定要迟到,不知道为什么我原来做的很久了:)

编辑2:将版本7中的jsfiddle更新为版本9.

答案 2 :(得分:2)

也许它解决了你的问题:

$("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

答案 3 :(得分:1)

隐藏除这个以外的所有li,您可以使用此代码...

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


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

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

});

DEMO