Javascript 如何获取每个选项卡中的所有数据属性值

Javascript 如何获取每个选项卡中的所有数据属性值,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我有一个选项卡,在每个选项卡中,都有一些具有“data”属性的div。我需要每个选项卡的所有数据属性 $(“#myTab a”)。单击(函数(e){ e、 预防默认值(); $(this.tab('show'); }); $(函数(){ $('#myTab a:last').tab('show'); }) $('.save')。在('click',function()上{ var-dataNid=[]; $('.tab窗格')。每个(函数(索引、值){ $(this).find('div')。

我有一个选项卡,在每个选项卡中,都有一些具有“data”属性的div。我需要每个选项卡的所有数据属性

$(“#myTab a”)。单击(函数(e){
e、 预防默认值();
$(this.tab('show');
});
$(函数(){
$('#myTab a:last').tab('show');
})
$('.save')。在('click',function()上{
var-dataNid=[];
$('.tab窗格')。每个(函数(索引、值){
$(this).find('div')。每个(函数(i,项){
dataNid.push($(this.data('id'));
})
console.log('tabpane'+index+'tabid:'++$(this.attr('ID')++'DATA-NID:'+dataNid);
});
});

1. 2. 3. 1. 3. 1.
保存
由于代码段正在运行,并且您花了一些时间来提供它,下面是解决方案

只需移动数组
dataNid
,以便为每个窗格使用一个新的数组

$(“#myTab a”)。单击(函数(e){
e、 预防默认值();
$(this.tab('show');
});
$(函数(){
$('#myTab a:last').tab('show');
})
$('.save')。在('click',function()上{
$('.tab窗格')。每个(函数(索引、值){
var-dataNid=[];
$(this).find('div')。每个(函数(i,项){
dataNid.push($(this.data('id'));
})
console.log('tabpane'+index+'tabid:'++$(this.attr('ID')++'DATA-NID:'+dataNid);
});
});

1. 2. 3. 1. 3. 1.
保存
由于代码段正在运行,并且您花了一些时间来提供它,下面是解决方案

只需移动数组
dataNid
,以便为每个窗格使用一个新的数组

$(“#myTab a”)。单击(函数(e){
e、 预防默认值();
$(this.tab('show');
});
$(函数(){
$('#myTab a:last').tab('show');
})
$('.save')。在('click',function()上{
$('.tab窗格')。每个(函数(索引、值){
var-dataNid=[];
$(this).find('div')。每个(函数(i,项){
dataNid.push($(this.data('id'));
})
console.log('tabpane'+index+'tabid:'++$(this.attr('ID')++'DATA-NID:'+dataNid);
});
});

1. 2. 3. 1. 3. 1.
Save
问题在于在函数调用之前初始化了
var dataNid=[]

因此,由于没有在每次函数调用时重新初始化数组,因此只需不断向同一个
dataNid

$('.save').on('click', function(){
    //var dataNid = []; //remove this

    $('.tab-pane').each(function (index, value) {
            var dataNid = []; //move it HERE!
            $(this).find('div').each(function(i, item){
                dataNid.push($(this).data('id'));
            })
            console.log('Tab Pane' + index + ' TAB ID: ' + $(this).attr('id') + ' DATA-NID: ' + dataNid); 
        });
});

问题在于在函数调用之前初始化了
var dataNid=[]

因此,由于没有在每次函数调用时重新初始化数组,因此只需不断向同一个
dataNid

$('.save').on('click', function(){
    //var dataNid = []; //remove this

    $('.tab-pane').each(function (index, value) {
            var dataNid = []; //move it HERE!
            $(this).find('div').each(function(i, item){
                dataNid.push($(this).data('id'));
            })
            console.log('Tab Pane' + index + ' TAB ID: ' + $(this).attr('id') + ' DATA-NID: ' + dataNid); 
        });
});

var-dataNid=[]是所有三个窗格的相同数组。。。所以结果很正常。是什么阻止了您修复它?@Bryce77@sjahan基本上回答了您的问题:
dataNid=[]
是一个数组,它在开始时被声明,因此没有被清除是的,这是正确的。我在那里迷路了。如何为每个选项卡创建单独的数组。为了澄清上述注释:只需移动
var dataNid=[]
$('.tab pane')内。每个(
循环.Javascript在声明变量的位置上有点滑稽,但它是用
=[]
初始化的,应该在循环内。哈哈,我虽然他只想要所选选项卡的“ID”,所以我想他只需要替换
$('.tab pane')。每个(
by
$('.tab pane.active')。每个(
对于所有三个窗格都是相同的数组…因此结果非常正常。是什么阻止了您修复它?@Bryce77@sjahan基本上回答了您的问题:
dataNid=[]
是一个在开始时声明的数组,因此没有被清除是的,这是正确的。我在那里迷路了。如何为每个选项卡创建单独的数组。要澄清上述注释:只需将
var dataNid=[];
移到
$('.tab窗格')内。每个(
loop.Javascript在声明变量的位置上有点滑稽,但是它是用
=[]
初始化的,应该在循环中。哈哈,我想他只想要所选选项卡的“ID”,所以我想他只需要替换
$('.tab pane')。每个(
$('.tab pane.active')。每个(
是的,和@sjahan一样。谢谢!是的,和@sjahan一样。谢谢!