我有以下页面结构
<div class="main">
<article class="article">
<!-- ... -->
<div class="article-footer>
<ul>
<li><a href="#" class="article-play" data-play="3" data-src="http://..."></a></li>
<li>...</li>
<!-- ... -->
</ul>
</div>
</article>
<article class="article playing"> <!-- Notice Additional Class .playing
<!-- ... -->
<div class="article-footer>
<ul>
<li><a href="#" class="article-play" data-play="3" data-src="http://..."></a></li>
<li>...</li>
<!-- ... -->
</ul>
</div>
</article>
<!-- ... -->
</div>
所以我想做的是,在这个点击功能中:
$(".audiojs .play-pause").click(function() {
<!-- Code Here -->
})
单击替换锚标记内的数据属性,其中包含.article-play
从.playing
到data-play="3"
的文章内的文章data-pause="4"
,但是在某种程度上它会检查如果有data-play="3"
而不是点击,请将其替换为data-pause="4"
,如果有data-pause="4"
,则将其替换为data-play="3"
答案 0 :(得分:1)
$(".audiojs .play-pause").click(function() {
var element = $('.playing .article-play')
var play = element.attr('data-play')
var pause = element.attr('data-pause')
if(play == '3'){
element.removeAttr('data-play');
element.attr("data-pause",'3');
}else if(pause == '4'){
element.removeAttr('data-pause');
element.attr("data-play",'4');
}
});
答案 1 :(得分:0)
我认为以下内容应该有效(未经测试):
var dataPlay = $(".playing a.article-play").data("play");
var dataPause = $(".playing a.article-play").data("pause");
if (dataPlay == "3") {
$(".playing a.article-play").removeAttr("data-play").attr("data-pause", "4");
} else if (dataPause == "4") {
$(".playing a.article-play").removeAttr("data-pause").attr("data-play", "3");
}
答案 2 :(得分:0)
var a = $("article.playing a.article-play")
a.each(function(){
var playAttr = $(this).attr("data-play")
var pauseAttr = $(this).attr("data-pause")
if(playAttr){
if(playAttr == "4"){
$(this).removeAttr("data-play");
$(this).data("pause",3);
}
}
if(pauseAttr){
if(pauseAttr == "3"){
$(this).removeAttr("data-pause");
$(this).data("play",4);
}
}
});
答案 3 :(得分:0)
我认为您可以将处理pause
的方法与处理play
简化HTML
<div class="playing">
<div id="output"></div>
<a href="#" class="article-play" data-play="4">click</a>
</div>
<强> JS 强>
$(".playing").on("click", ".article-play[data-pause]", function () {
$(this).removeAttr("data-pause");
$(this).attr("data-play", 4);
$("#output").text("playing 4");
});
$(".playing").on("click", ".article-play[data-play]", function () {
$(this).removeAttr("data-play");
$(this).attr("data-pause", 3);
$("#output").text("pausing 3");
});
此答案基于我在尝试实施此解决方案时收到the question I asked的答案