2017-04-12 120 views
1

我有jQuery的標準點擊功能,點擊功能越來越老了數據屬性值 - JQuery的

$(".related-play").click(function() { 
    $('#playlist .panel-collapse').removeClass('in'); 
    track_id = $('.related-play').data('id'); 
    $('#collapse-' + track_id).addClass("in"); 
    $('#collapse-' + track_id + " li").removeClass("active"); 
    $('#collapse-' + track_id + " .related").addClass("active");c 
    console.log(track_id); 
}); 

HTML

<div id="collapse-1156」 class="panel-collapse collapse」> 
    <ul class="nav nav-tabs inside-track-tabs"> 
      <li class=「active stems"><a data-toggle="tab" href="#stems-1156">Stems</a></li> 
      <li class="related"><a data-toggle="tab" href="#related-1156">Related Tracks</a></li> 
    </ul> 
<div class="tab-content inside-track-content」> 
    <div id=「stems-1156" class="tab-pane fade"></div> 
    <div id="related-1156" class="tab-pane fade"></div> 
</div> 

<a class="related-play" data-id="1156">RELATED</a> 

獨立於這個功能我也有改變數據 - 另一種功能id屬性基於頁面中的其他事件,通過使用此jQuery線

trackID = 1567 (This is just an example but actually trackID is generated at random and could be any number of different IDs 
) 
jQuery(".related-play").attr("data-id", trackID); 

對於某些原因,我點擊一次相關播放,它第一次抓取它,但是當我再次點擊它時,在數據屬性發生變化之後,它抓取舊值。我檢查DOM,這個數據屬性有一個更新的值,它獲得了舊值。

我不明白爲什麼會這樣做雖然

+0

請問您可以包括您的html代碼或創建一個問題的片段。 –

+1

也試試這個'track_id = $(this).data('id');' –

+0

更新@CarstenLøvboAndersen,這個摺疊div是衆多track_id的 – DIM3NSION

回答

0

在jQuery中,$(this)被用來指代當前對象

你需要給使用this如下

當前的參考對象
$(".related-play").click(function() { 
    $('#playlist .panel-collapse').removeClass('in'); 
    track_id = $(this).data('id'); // Change applied 
    $('#collapse-' + track_id).addClass("in"); 
    $('#collapse-' + track_id + " li").removeClass("active"); 
    $('#collapse-' + track_id + " .related").addClass("active");c 
    console.log(track_id); 
}); 
+0

@ DIM3NSION - 使用'$(this)'獲取當前對象的數據-id – prog1011

+0

謝謝!我已經改變了它,但它只是抓住舊的數據屬性值不在DOM了 – DIM3NSION

+0

似乎在這裏工作https://jsfiddle.net/u3fms4kq/ –