首先我使用$ .ajax在我的html页面中加载html代码
for(var i=0;i<5;i++)
{
$.ajax({
type: "get",
url: "test.xml",
async: false, //without set the async to false could cause problem,I also don't konw why
dataType: "html",
timeout: 2000,
success: function (xml) {
var $temp_code = $(xml).find("test[id='" + i+ "']").find("html_code").html();
//the html code is like <div class="test"></div>……
$($temp_code).appendTo($(".wrapper")).show();
});
}
代码可以在页面中正常工作,xml中的html代码可以正确读取。然后我想给每个“test”div绑定一个单击函数
喜欢
$(".test").click(function () {
alert("");
});
但是这不会成功,点击每个“测试”警报什么
然后我尝试将它放入$ .ajax完全像:
$.ajax({
……
complete:function(){
$(".test").click(function () {
alert("");
});
}
})
这只能用于第一个“测试”div,它意味着只需点击第一个“测试”就可以提醒
如何解决此问题?让点击在每个“测试”中工作,
谢谢!
答案 0 :(得分:1)
你想要的是什么,这也是很多更快,因为它使用该AJAX请求的结果(应该是相同的)用于循环,而不是重复地发出请求,像这样:
$.ajax({
type: "get",
url: "test.xml",
dataType: "html",
success: function (xml) {
for(var i=0;i<5;i++) {
var $temp_code = $(xml).find("test[id='" + i+ "']").find("html_code").html();
$($temp_code).appendTo($(".wrapper")).show().find(".test").click(function () {
alert("");
});
}
}
});
这样做只会将.click()
仅绑定到刚刚添加的元素,.test
创建的<div>
$($temp_code)
元素。
答案 1 :(得分:0)
尝试使用.live()(http://api.jquery.com/live/)
答案 2 :(得分:0)
在第一个脚本片段中,您需要引用xml.d
来访问GET返回的内容。
success: function (xml) {
var $temp_code = $(xml.d).find("test[id='" + i+ "']").find("html_code").html();
我认为这也可以让你点击处理程序。