Jquery each()无法正常工作

时间:2011-12-14 04:00:14

标签: jquery jquery-selectors

我有一些需要调整的代码。我需要将.play“rel”替换为.audio_player“id”。将有多个“媒体”div需要经历。

这是代码

<div class="media">
    <div class="message_buttons">
        <li id="listen" class="play_button">
            <a class="play" rel="" href="AudioFile.mp3"> Listen </a>
        </li>
    </div>
    <div class="audio_player" id="play1243">
        <audio controls="controls"></audio>
    </div>
</div>

这是我到目前为止的剧本。它似乎与第一个媒体div一起工作,但随后使页面上的每个.play“rel”与第一个audio_player“id”相同,而不是它自己的div中的“id”。

$.each($('.play'), function( index ) {
    //$(this).attr("rel", $(".audio_player").attr("id"));
    $(".play").attr("rel", $(".audio_player").attr("id"));
});

我评论了另一个版本,它也有效但给出了相同的结果。非常感谢你们帮助我做到这一点。我觉得我现在真的很亲密。但最后一点点不能得到它。感谢您的时间。

7 个答案:

答案 0 :(得分:2)

只需在选择器上运行each(),然后就发现的每个元素使用this上下文:

$('.play').each(function(i) {
    var id = $(this).parents('.media').find('.audio_player').attr('id');
    $(this).attr('rel', id);
});

答案 1 :(得分:1)

$(".play").each(function() {
  $(this).attr("rel", $(".audio_player").attr("id"));
});

答案 2 :(得分:1)

尝试

$('.play').each(function(){
   $(this).attr("rel",$(this).closest('.message_buttons').next('.audio_player').attr('id'));
});

Fiddle here

答案 3 :(得分:1)

你可以用这个:

$('.play').each(function() {
    $(this).attr('rel', $(this).closest('.media').find('.audio_player').attr('id'));
});

查看 this jsfiddle ,了解相关信息。

答案 4 :(得分:0)

$('.play').each(function(index) {
    $(this).attr('rel', $('.audio_player').get(index).attr('id');
});

答案 5 :(得分:0)

你可以这样做

$.each($('.play'), function( index ) {
$(this).attr("rel",$(this).closest(".audio_player").attr("id"));
});

检查小提琴here

答案 6 :(得分:0)

$('.play').each(function( index ) {
  $(this).attr("rel", $(this).closest('.media').find('.audio_player').attr('id'));
});