2014-02-22 76 views
1

我承认完全不熟悉jQuery。我在这里窥探了一下,试图找到片段来帮助我实现目标,但是我找不到任何东西。当用jQuery点击父母时更改孩子的班级

我的标记是这样的:

<a href="#" id="local-song-button" class="music sm2_link"> 
    <i id="button-toggle" class="fa fa-play-circle-o blue"></i> 
</a> 

我运行一个脚本,改变local-song-button <a>取决于事件。播放歌曲时可以为sm2_link,播放歌曲时为sm2_playing,暂停时为sm2_paused

现在,我遇到的问题是我想改变button-toggle的类,具体取决于local-song-button正在采用哪一类。我似乎无法找出正确的方法来做到这一点。我也查看了toggleClass(),但我觉得我需要在某处使用if()声明?这是所有我能想出:

if ($('#local-song-button').hasClass('sm2_playing')){ 
    $('#button-toggle').removeClass('fa-play-circle-o'); 
    $('#button-toggle').addClass('fa-pause'); 
}elseif ($('#local-song-button').hasClass('sm2_paused')){ 
    $('#button-toggle').removeClass('fa-pause'); 
    $('#button-toggle').addClass('fa-play-circle-o'); 
} 

而这绝对不是工作。

+0

除了'else if'代码似乎很好。你在什么事件触发这个代码? –

回答

0

这应该工作,你错过了空间elseif之间,你也可以使用toggleClass

function togglePlayButton() 
{ 
    var loadingBtn = $('#local-song-button'); 
    var toggleBtn = $('#button-toggle'); 

    if(loadingBtn.hasClass('sm2_playing') || loadingBtn.hasClass('sm2_link')) 
    { 
     toggleBtn.toggleClass('fa-play-circle-o fa-pause'); 
    } 
    else if(loadingBtn.hasClass('sm2_paused')) 
    { 
     toggleBtn.toggleClass('fa-pause fa-play-circle-o'); 
    } 
} 
+0

我已经在一个函数中使用了你的代码,并且像这样调用它:'$('#local-song-button')。click(togglePlayButton());' 控制台中没有更改和错误。我是否以这种错误的方式去做?在页面加载'#local-song-button'上的唯一类时,第一次点击就是当'sm2_playing'被附加/切换到'sm2_paused'时。如果这是类的附加方式,此代码是否可以工作? [这里是有问题的页面](http://badjams.com/t/test-page.html),如果你想查看它的行动。 –

+0

我已经更新了我的答案,可以使用togglePlayButton()函数。 –

+0

出色地工作。非常感谢! –

0

如果你使用Firebug或Chrome开发者工具,你可以看到从控制台选项卡此错误:

Uncaught SyntaxError: Unexpected token { 

这是因为你的elseif的。正确的方法是使用else if。修复它,它应该没问题。

还要注意,如果你的问题所提供的HTML标记时,#local-song-button锚只有sm2_link类,也不sm2_playingsm2_paused

+0

啊!谢谢。我正在运行的另一个脚本会根据正在播放或暂停的歌曲来更改/附加其他两个类。 –