获取动态手风琴jQuery的索引

时间:2018-09-24 10:40:31

标签: javascript jquery html bootstrap-accordion

通过AJAX调用后,我可以生成一个手风琴列表:

# Say data is in rdd called ar_rdd

ar_rdd1 = ar_rdd.map(lambda x: create_map(x.encode("ascii","ignore").split(",")) ))

其中templateAccordion是:

data.items.forEach(function(item,index) {
                if(item.desciption != "") {
                    $('#accordionList').append(
                        templateAccordion(item, index)
                );
          }
});

问题:

当我单击每个手风琴的标题以获取有关该元素的其他数据时,我需要调用另一个服务。为此,我想了两种可能的方法。

第一个是元素标头上的var templateAccordion = function(item, index) { return '<div class="card">' + '<div class="card-header" id="heading_'+index+'" data-toggle="collapse" onclick="test('+index+')" data-target="#collapse_'+index+'" aria-expanded="false" aria-controls="collapse_'+index+'">' + '<h5 class="mb-0">'+ '<button class="btn btn-link collapsed">'+ item.desciption + '</button>'+ '</h5>'+ '</div>'+ '<div id="collapse_'+index+'" class="collapse" aria-labelledby="heading_'+index+'" data-parent="#accordionList">'+ '<div class="card-body">' + '</div>'+ '</div>'+ '</div>' } 函数(例如在我的示例中)。但是此解决方案不起作用,因为我得到了onclick=""(并且该函数存在于我的JavaScript中)。

第二个是使用标题的Uncaught ReferenceError: test is not defined触发点击功能。但正如您所见,它是动态的。所以我没有,因为它可能是1,2,3,依此类推。

我无法遍历整个列表,并尝试获取正确的id。这是不可想象的。

还有其他方法吗?也许只是明白为什么它让我id

1 个答案:

答案 0 :(得分:2)

这应该有效:

$('#accordionList').on('click','.card-header', function(){
    var id = $(this).attr('id');
});