Javascript Ajax单击仅工作一次
这个问题可能已经得到了回答,但我已经检查了现有的解决方案,并尝试了它们,但没有成功。基本上,我已经设置了一个由单击事件触发的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');
$('.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,是的,它以前存在过