我设置了音乐页面,当点击播放按钮播放歌曲时,课程从buttons_mp3j
更改为buttons_mp3jpause
。当课程为buttons_mp3jpause
时,我想定位其父li.song
并为其添加课程。
<li class="song">
<div>
<span>
<span class="buttons_mp3jpause">
</span>
</span>
</div>
</li>
我尝试了以下代码,但没有用。
$(".buttons_mp3jpause").parents("li.song").addClass("playing");
我哪里出错了?
修改
$('.haiku-play').bind('click', function() {
$('.haiku-player').jPlayer("pause");
})
编辑2
<article>
<ul>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
</ul>
</article>
<article>
<ul>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
</ul>
</article>
<article>
<ul>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
<li class="song">yadayada</li>
</ul>
</article>
答案 0 :(得分:2)
正如您在问题中提到的,您正在动态分配类buttons_mp3jpause
,因此您需要将处理程序附加到页面加载时存在于DOM中的元素,并将其委托给动态类,使用jQuery的.on()
:
$('.song').on('click', '.buttons_mp3jpause', function() {
$(this).closest('li.song').addClass('playing');
});
只需从所有其他playing
元素中移除song
类(以下假设您的所有song
元素均为siblings
!):
.addClass('playing').siblings('li.song').removeClass('playing');
在这种情况下最简单的方法是从所有playing
元素中删除song
类,然后将其添加到相关元素中:
$('li.song').removeClass('playing');
$(this).closest('li.song').addClass('playing');
$('.song').on('click', '.buttons_mp3jpause', function() {
$('li.song').removeClass('playing');
$(this).closest('li.song').addClass('playing');
});
答案 1 :(得分:0)
$(".buttons_mp3jpause").parent().parent().parent().addClass("playing");
如果您想定位父母。
$(".buttons_mp3jpause").closest("li.song").addClass("playing");
或者你可以使用最近的找到最近的李与班级歌曲