0

我设置了一个音乐页面,当单击歌曲的播放按钮时,课程从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>
4

2 回答 2

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');
});
于 2013-04-05T11:28:29.157 回答
0
$(".buttons_mp3jpause").parent().parent().parent().addClass("playing");

如果你想瞄准父母。

$(".buttons_mp3jpause").closest("li.song").addClass("playing");

或者你可以使用最接近的找到最接近的 li 与 class song

于 2013-04-05T11:20:50.030 回答