一个旧帖子,但我喜欢分享,因为我有同样的情况,但我终于知道了问题:
问题是:我们制作了一个函数来处理指定的 HTML 元素,但尚未创建与此函数相关的 HTML 元素(因为该元素是动态生成的)。为了让它工作,我们应该在创建元素的同时创建函数。元素优先于与它相关的功能。
简单来说,一个函数只对在它之前创建的元素(他)起作用。任何动态创建的元素都意味着在他之后。
但请检查没有注意上述情况的样品:
<div class="btn-list" id="selected-country"></div>
动态附加:
<button class="btn-map" data-country="'+country+'">'+ country+' </button>
通过单击按钮,此功能运行良好:
$(document).ready(function() {
$('#selected-country').on('click','.btn-map', function(){
var datacountry = $(this).data('country'); console.log(datacountry);
});
})
或者你可以使用 body :
$('body').on('click','.btn-map', function(){
var datacountry = $(this).data('country'); console.log(datacountry);
});
与之相比,这不起作用:
$(document).ready(function() {
$('.btn-map').on("click", function() {
var datacountry = $(this).data('country'); alert(datacountry);
});
});
希望它会有所帮助