2013-06-05 44 views
1

刪除數據屬性我有以下聲明所有相同的元素,除了當前

  if(play == '4'){ 
       $(this).removeAttr('data-playa'); 
       $(this).attr("data-pausea",'5'); 
      } 

基本上它取代當前元素的data-playa="4"data-pausea="5"$(this)推薦給當前主播標籤的文章播放類$(article-play)。我需要以某種方式修改這個代碼,也適用於以下頁面上的所有元素$(article-play),除了目前的一個:

   $(article-play).removeAttr('data-pausea'); 
       $(article-play).attr("data-playa",'4'); 

所以這在邏輯上是這樣

 if(play == '4'){ 
      // Apply this to current .article-play 
      $(this).removeAttr('data-playa'); 
      $(this).attr("data-pausea",'5'); 
     // Apply this to all other .article-play on a page 
     $(article-play).removeAttr('data-pausea'); 
     $(article-play).attr("data-playa",'4'); 
     } 
+1

使用'removeData ('pausea')'而不是'removeAttr()'。另外,使用'data()'爲所選元素設置數據。 –

+0

@BradM有什麼區別? – Ilja

+1

@llya我不確定自己的所有差異,但jQuery不僅僅將數據解釋爲標準元素屬性;它在內存中保存引用。簡單地刪除屬性可能並不實際從jQuery的內存中刪除數據。 –

回答

3

在最簡單的:

$(this).removeAttr('data-playa').attr("data-pausea",'5'); 
$(article-play).not(this).removeAttr('data-pausea').attr("data-playa",'4'); 

如果你使用data()方法代替:

$(this).removeData('playa').data("pausea",'5'); 
$(article-play).not(this).removeData('pausea').data("playa",'4'); 

如果其他元素是同級的,但是:

$(this).removeData('playa').data("pausea",'5').siblings() 
    .removeData('pausea').data("playa",'4'); 
0
$(article-play).not(this).removeAttr('data-pausea'); 

相關問題