根据它拥有的类选择子元素

时间:2013-07-03 22:02:56

标签: javascript jquery

以下是我的HTML

<ul id="QBS">
  <li>
    <a class="qb_mode starting Rodgers" href="#">See Stats</a>
  </li>
  <li>
    <a class="qb_mode Manning" href="#">See Stats</a>
  </li>
  <li>
    <a class="qb_mode Brady" href="#">See Stats</a>
  </li>
</ul>

我想找到这个无序列表,然后告诉哪个项目有起始qb类,然后返回有他们名字的类(brady rodger manning)等。

让我陷入循环的是链接包含在list元素中的事实。

以下是我的尝试:

element = $("#qbs"); // pretty sure I want this vs getElementbyDocumentID
children = element.children();` // gets me all the list elements

for (i=0;i<children.length;i++) {
  grandchild = children[i].children();
  ???? How would I get the 3rd class on this element?
}

抱歉格式化。

4 个答案:

答案 0 :(得分:2)

这个怎么样?

var allClasses = $("#QBS").find('li a[class^="qb_"]')
     .map(function () { 
          return this.className.split(" ").pop();
}).get();
console.log(allClasses);

<强> Fiddle

如果以qb_ *开头的课程在开头,并且您只想参加比赛的最后一课。

如果所有的类名都是qb_mode,那么:

var allClasses = $("#QBS").find('.qb_mode').map(function () {
    return this.className.split(" ").pop();
}).get();

如果你想要所有这些:

var allClasses = $("#QBS").find('.qb_mode').map(function () {
    var cls = this.className.replace(/qb_mode/,'');
    return cls.trim().split(/\W+/);
}).get();
console.log(allClasses);

<强> Fiddle

答案 1 :(得分:1)

如果我理解正确,那怎么样:

var name = $('#QBS a.qb_mode.starting').prop('class').replace(/\s*(qb_mode|starting)\s*/g,'');
console.log(name); // Rogers

See demo here

答案 2 :(得分:1)

a=document.getElementById('QBS');
var b=a.getElementsByClassName("qb_mode");
var i, j=b.length, result=[];
for(i=0;i<j;i++) {
  c=b[i].className.split(" ");
  result.push(c.pop());
}
return result;

答案 3 :(得分:1)

小提琴http://jsfiddle.net/3Amt3/

var names=[];

$("#QBS > li a").each(function(i){
    var a=$(this).attr("class").split(" ");
    names[i]=a[(a.length-1)];
    console.log("Name  is " + names[i]);    
 });

或更精确的选择器

 $("#QBS > li a.qb_mode").each( ....