我有一些需要调整的代码。我需要将.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"));
});
我评论了另一个版本,它也有效但给出了相同的结果。非常感谢你们帮助我做到这一点。我觉得我现在真的很亲密。但最后一点点不能得到它。感谢您的时间。
答案 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'));
});
答案 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'));
});