古い投稿ですが、同じケースがあるので共有するのが大好きですが、ついに問題がわかりました:
問題は次のとおりです。指定された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').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);
});
});
それが役立つことを願っています