2013-06-05 22 views
-1

我有以下的頁面結構找到具體的錨標記,更換上點擊數據屬性附加傷害

<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這是內部文章與類.playingdata-play="3"data-pause="4",但在一種方式,它檢查,如果有data-play="3"比點擊替換它與data-pause="4"否則,如果有data-pause="4"比它替換到data-play="3"

+0

從頁面源代碼的答案,我不t看到任何能滿足選擇器'「.audiojs .play-pause」'的元素。 –

+0

你正在做什麼?這感覺就像你讓自己的問題比需要的更復雜。 – Alnitak

+0

@Jack它沒有呈現她,我相信這不是重要的 – Ilja

回答

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'); 
    } 
}); 
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"); 
} 
+0

似乎只有一種方式工作,刪除數據播放和設置數據暫停,但另一次點擊什麼也沒有發生 – Ilja

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); 
     } 
    } 
}); 
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"); 
}); 

jsFiddle

這個答案是基於我收到the question I asked試圖實施該解決方案

相關問題