1

我有一个这样的 HTML 部分:

<li data-file="file.mp3">
    <div class="pink-light playing">

现在,我想获取<li>. 但是我有几个<li>标签,我只想获取具有内部“正在播放”类的 div 的属性

我的脚本:

$(".playing").before($("li"),function(){

    alert($(this).attr("data-file"));

});

怎么了?

谢谢!

4

3 回答 3

4

有几种方法可以做到这一点。如果.playing元素是唯一的,那么:

var file = $(".playing").closest("li").attr("data-file");

closest找到与给定选择器匹配的最近的祖先。由于您的.playing元素是 的子元素(后代),因此li您可以这样找到它。

或者,您可以使用:has伪类:

var file = $("li:has(.playing)").attr('data-file');

...但请注意,这:has是一个 jQuery 的东西,所以它不能委托给选择器引擎。

于 2012-11-21T05:47:56.943 回答
3

尝试这个

 $(".playing").each(function(){
  alert($(this).parent().attr("data-file"));
 });

注意:使用 prop 而不是 attr

于 2012-11-21T05:49:47.607 回答
1

before仅用于插入新元素。如果要检索,请prev改用。虽然,在您的情况下,您对前一个兄弟姐妹并不真正感兴趣,但对parent节点感兴趣,因为div它位于li

$(".playing").parent().each(function() {
    alert($(this).attr("data-file"));
});
于 2012-11-21T05:47:21.733 回答