如果我没有在ajax调用的成功函数中包含选择器,则无法选择ajax加载的内容
cannot select ajax loaded content if I don't include selector inside success function of ajax call
我不能选择任何通过ajax调用插入的元素,如果jquery选择是ajax成功函数之外。如果我把所有的东西都移到success下面,它就可以正常工作了。
有经验的人可以帮助我了解发生了什么以及如何处理这个问题吗?我已经找了2天了,什么也找不到:S如此:
//Show levels using ajax
//define variables
var levels = 2; //level count can be rewritten to come from DB and not be hardcoded like now
var completed_calls = 0; //count tasks start from 0
var views = new Array();
//All level display ajax function
function create_views(level) {
$.ajax({
url: "actions.php",
type: "GET",
data: "show_level=" + level,
cache: false,
success: function (data){
views[level] = '<li data-level="' + level + '">' + data + '</li>';
//Count completed tasks
completed_calls++;
//if last level is being called append and activate slider
if (levels == completed_calls) {
//append views to container
$(".slides_container").append(views.join(' '));
//activate slider
var unislider = $(".slides_container").dpUniSlider({
//loop: false,
draggable: false
});
//Login and Registration windows on login slide, one closes the other opens up
//+ login registration links in header for logged out users
//Login
$("#header-login, #logwindow").on("click", function(){
$("#regsitrationform").hide();
$("#register h2").hide();
$("#loginform").show().css("opacity",0);
unislider.goToSlide(2);
$("#loginform, #register h2").delay(480).fadeTo(0, 1);
$("#logwindow").removeClass("active").addClass("notactive");
$("#regwindow").removeClass("notactive").addClass("active");
return false;
});
//Registration
$("#header-register, #regwindow").on("click", function(){
$("#loginform").hide();
$("#register h2").hide();
$("#regsitrationform").show().css("opacity",0);
unislider.goToSlide(2);
$("#regsitrationform, #register h2").delay(480).fadeTo(0, 1);
$("#regwindow").removeClass("active").addClass("notactive");
$("#logwindow").removeClass("notactive").addClass("active");
return false;
});
//Pop-up logo tooltip: close
$(".close").on("click", function(){
$(".logo").fadeTo("slow", 1);
$(this).parent().fadeOut("fast");
return false;
});
//Pop-up logo tooltip: clear
$(".clear").on("click", function(){
$(this).parent().find("input").val("");
return false;
});
//Activate Georgian keyboard for some logos
$("input[data-lang=ge]").GeoKBD();
}
}
});
}
//Loop through all levels and display views
for (var i=1; i<=levels; i++) {create_views(i);}
这并不:
//Show levels using ajax
//define variables
var levels = 2; //level count can be rewritten to come from DB and not be hardcoded like now
var completed_calls = 0; //count tasks start from 0
var views = new Array();
//All level display ajax function
function create_views(level) {
$.ajax({
url: "actions.php",
type: "GET",
data: "show_level=" + level,
cache: false,
success: function (data){
views[level] = '<li data-level="' + level + '">' + data + '</li>';
//Count completed tasks
completed_calls++;
//if last level is being called append and activate slider
if (levels == completed_calls) {
//append views to container
$(".slides_container").append(views.join(' '));
//activate slider
var unislider = $(".slides_container").dpUniSlider({
//loop: false,
draggable: false
});
}
}
});
}
//Loop through all levels and display views
for (var i=1; i<=levels; i++) {create_views(i);}
//Ajax call to display-update single level
function update_view(level) {
}
//Login and Registration windows on login slide, one closes the other opens up
//+ login registration links in header for logged out users
//Login
$("#header-login, #logwindow").on("click", function(){
$("#regsitrationform").hide();
$("#register h2").hide();
$("#loginform").show().css("opacity",0);
unislider.goToSlide(2);
$("#loginform, #register h2").delay(480).fadeTo(0, 1);
$("#logwindow").removeClass("active").addClass("notactive");
$("#regwindow").removeClass("notactive").addClass("active");
return false;
});
//Registration
$("#header-register, #regwindow").on("click", function(){
$("#loginform").hide();
$("#register h2").hide();
$("#regsitrationform").show().css("opacity",0);
unislider.goToSlide(2);
$("#regsitrationform, #register h2").delay(480).fadeTo(0, 1);
$("#regwindow").removeClass("active").addClass("notactive");
$("#logwindow").removeClass("notactive").addClass("active");
return false;
});
//Pop-up logo tooltip: close
$(".close").on("click", function(){
$(".logo").fadeTo("slow", 1);
$(this).parent().fadeOut("fast");
return false;
});
//Pop-up logo tooltip: clear
$(".clear").on("click", function(){
$(this).parent().find("input").val("");
return false;
});
//Activate Georgian keyboard for some logos
$("input[data-lang=ge]").GeoKBD();
我不能选择任何元素插入通过ajax调用,如果jquery选择是ajax成功函数之外。如果我把所有的东西都移到success下面,它就可以正常工作了。
听起来问题是你试图将事件处理程序绑定到还不存在的元素。尝试使用on
, delegate
或live
(取决于你使用的是哪个版本的jQuery)在父元素上,当你的代码执行。
类似:
$(".slides_container").on('click', 'li[data-level]', function () {...});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 获取ajax加载的图像的大小
- 分页:如何用AJAX加载第一个页面
- 页面加载之前的jQuery Ajax加载程序
- ajax加载了内容,脚本没有执行
- 如何使用post和ajax加载视图Codeigniter
- $(select).selectmenu('打开')不'如果使用ajax加载页面,则不起作用
- ajax加载()后,包含图表的图像不会重新绘制
- 如果数据为空,Ajax加载不会停止
- 防止用户在jQuery Mobile中ajax加载页面时单击其他位置
- 将内容ajax加载到html弹出窗口中
- 导航栏和AJAX加载
- 用于各个元素的Ajax加载程序
- 通过AJAX加载页面并执行javascript和CSS
- 使用ajax加载页面的一部分
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 显示全屏Ajax加载程序的最佳方式
- 获取通过AJAX加载的元素
- 如何在rails应用程序中测试AJAX加载的内容
- 如何在Ajax加载新内容时停止JavaScript执行