在类名末尾获取数值并使用jQuery存储为变量

时间:2011-07-17 09:17:28

标签: jquery class numerical

通过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函数提取菜单类名的数字结尾(即6中的cat-item 6)并使用该值来定位相应的帖子。为了详细说明,我会将6用作变量,并找到以filter结尾的6类。

这是我到目前为止所做的:

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

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

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

        return false;

  });

js恶魔应该很容易: - )

3 个答案:

答案 0 :(得分:4)

您可以使用RegEx从您的班级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;
});

答案 1 :(得分:3)

如果你确定类字符串中只有一个数字,你可以使用它:

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

如果您不确定,请更好地使用:

var num_id = $(this).attr('class').match(/cat-item-(\d+)/)[1]

答案 2 :(得分: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中。