通过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
?
答案 0 :(得分:2)
这应该有效:
$('#accordionList').on('click','.card-header', function(){
var id = $(this).attr('id');
});