2

考虑一个 WordPress 函数输出的这个菜单:

<ul id="header-cats"> 

    <li class="cat-item cat-item-6"><a href="url" title="View all posts filed under Category I">Category I</a> 
</li> 
    <li class="cat-item cat-item-7"><a href="url" title="View all posts filed under Category II">Category II</a> 
</li> 
    <li class="cat-item cat-item-8"><a href="url" title="View all posts filed under Category III">Category III</a> 
</li> 

</ul> 

现在考虑这个帖子列表:

<ul id="posts-preview" class="clearfix"> 

    <li class="filter-reset filter-hide filter-6 ">             
        <a class="post-thumb" id="post-112" href="url" >Link</a>        
    </li>

    <li class="filter-reset filter-hide filter-6 filter-8 ">            
        <a class="post-thumb" id="post-102" href="url" >Link</a>        
    </li>

    <li class="filter-reset filter-hide filter-7 ">             
        <a class="post-thumb" id="post-88" href="url" >Link</a>         
    </li>

    <li class="filter-reset filter-hide filter-6 ">             
        <a class="post-thumb" id="post-6" href="url" >Link</a>      
    </li>
</ul>

我的目标是使用 jQuery 函数来提取菜单类名的数字结尾(即6in cat-item 6)并使用该值来定位相应的帖子。为了详细说明,我会将其6用作变量并找到filter6.

这是我到目前为止所拥有的:

  $('#header-cats li').click(function(){  

    var num_id = $(this).attr('class') // ... matching "cat-item-?" etc...

        $(".filter-"+num_id).fadeIn(500); 

        return false;

  });

对于 js 恶魔来说应该很容易:-)

4

3 回答 3

6

您可以使用正则表达式从您的班级 ID 中获取号码(下面的代码未测试) -

$('#header-cats li').click(function(){  
    var num_id = $(this).attr('class').match(/\d+/); // ... matching "cat-item-?" etc...
    $(".filter-"+num_id).fadeIn(500); 
    return false;
});
于 2011-07-17T09:29:11.183 回答
4

如果您确定类字符串中只有 1 个数字,则可以使用:

var num_id = $(this).attr('class').match(/\d+/)[0]

如果您不确定,最好使用:

var num_id = $(this).attr('class').match(/cat-item-(\d+)/)[1]
于 2011-07-17T09:41:06.340 回答
0

我通常使用 .substring(9) 来获取数字,但我想有比这更好的方法

我也可以将其放在数据属性值或 id 中以便于参考,如下所示:

<li class="cat-item" data-catitem-num=8><a href="url" title="View all posts filed under Category III">Category III</a> 

然后在jquery中:

$(".cat-item").click(function(){
  var filterNum = $(this).attr("data-catitem-num");
  $(".filter-"+filterNum).fadeIn(500);
  return false;
})

或类似的东西

请注意 ,如果您的元素将具有唯一的“id”,请不要将其放入类中。把它放在一个 id 或 data-attribute 中(所以在你的情况下, catitem 和 filternum 可以在 data-catitem 或 data-filternum 中,也可以在它们的元素 id 中。

于 2011-07-17T09:21:04.917 回答