Javascript 单击函数获取旧数据属性值-JQuery

Javascript 单击函数获取旧数据属性值-JQuery,javascript,jquery,click,Javascript,Jquery,Click,我在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(

我在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

出于某种原因,我单击了一次“相关播放”,它第一次就可以很好地捕捉到它,但是当我再次单击它时,在数据属性发生更改并捕捉到旧值之后。我检查DOM,这个数据属性有一个更新的值,它获取旧值

我不明白为什么它会这样做,尽管在jQuery中,
$(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);
}); 
在jQuery中,
$(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);
}); 

这对我来说非常有效

 track_id = $(this).attr('data-id'); 

这对我来说非常有效

 track_id = $(this).attr('data-id'); 

请包含您的html代码或创建一个有问题的代码段。也请尝试此
track_id=$(this.data('id')
Updated@CarstenLøvboAndersen,这个collapse div是许多具有所有不同轨迹id的示例之一,但您制作的代码片段准确地向我们显示了问题所在,我担心我们可能很难帮助您。您可以包含您的html代码或创建一个有问题的代码片段。也可以尝试此
track\u id=$(this.data('id')
Updated@CarstenLøvboAndersen,这个collapse div是许多具有所有不同曲目id的示例之一,但是您制作了一个片段,准确地向我们展示了问题所在,我担心我们可能很难提供帮助you@DIM3NSION-使用
$(this)
获取当前对象数据,谢谢!,我把它改成这样,但它只是获取DOM中没有的旧数据属性值anymore@MantasČekanauskas您的小提琴可以工作,因为您使用的是两个具有相同数据属性的独立按钮。他正在用另一个函数在单个按钮中设置属性。@DIM3NSION我刚才遇到了同样的问题。我将$(this.data('id')更改为$(this.attr('data-id'),它得到了最新的值。别问我为什么,但它奏效了@DIM3NSION-使用
$(this)
获取当前对象数据,谢谢!,我把它改成这样,但它只是获取DOM中没有的旧数据属性值anymore@MantasČekanauskas您的小提琴可以工作,因为您使用的是两个具有相同数据属性的独立按钮。他正在用另一个函数在单个按钮中设置属性。@DIM3NSION我刚才遇到了同样的问题。我将$(this.data('id')更改为$(this.attr('data-id'),它得到了最新的值。别问我为什么,但它奏效了!