1

私はこのようなHTMLセクションを持っています:

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

ここで、の「data-file」属性を取得したいと思います<li>。しかし、私はいくつかのタグを持っており、内部に「playing」クラスを持つdivを持つ属性のみ<li>を取得したいと思います。

私のスクリプト:

$(".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"));
 });

注:attrの代わりにpropを使用してください

于 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 に答える