Javascript Ajax单击仅工作一次

Javascript Ajax单击仅工作一次,javascript,jquery,ajax,Javascript,Jquery,Ajax,这个问题可能已经得到了回答,但我已经检查了现有的解决方案,并尝试了它们,但没有成功。基本上,我已经设置了一个由单击事件触发的ajax加载环境,但它只适用于第一个实例 我的建议如下: $('.load-map').each(function(){ $(this).on('click', this, function(event) { event.preventDefault(); var fileID = $(this).attr('data-level');

这个问题可能已经得到了回答,但我已经检查了现有的解决方案,并尝试了它们,但没有成功。基本上,我已经设置了一个由单击事件触发的ajax加载环境,但它只适用于第一个实例

我的建议如下:

$('.load-map').each(function(){
    $(this).on('click', this, function(event) {
    event.preventDefault();

    var fileID = $(this).attr('data-level');

    $.ajax({
    url: fileID
    }).success(function (data) {
        $('#card-data').html(data);
    });

    setTimeout(function () {

    $('#myModal').on('shown.bs.modal', function () {
      })}, 1000);

    });
});
HTML设置是基本的:

<a href="#" data-level="level-1.html" class="load-map level-1-marker marker current-level"  data-toggle="modal" data-target="#myModal">
<a href="#" data-level="level-2.html" class="load-map level-2-marker marker current-level"  data-toggle="modal" data-target="#myModal">

不需要每个循环:试试这种方法

$( document ).on('click', '.load-map', 
function(evt)
{
    var fileID = $(this).attr('data-level');

    $.ajax({
     url: fileID
     }).success(function (data) {
        $('#card-data').html(data);
     });

    setTimeout(function () {

       $('#myModal').on('shown.bs.modal', function () {
       })}, 1000);

    });
}

尝试将
$('.load map')替换为
$('.load map')。每个(函数(){
)都替换为
$('.load map')。单击(函数(){
(并删除
$(此)。在('click')…
).你不需要在元素中循环。你有相同的情态动词id。这可能是只工作的问题once@BrettGregson起初我就是这样,但事实并非如此working@babusi加载页面时HTML是否存在,还是稍后用JavaScript添加?@BrettGregson,是的,它以前存在过