问题
我尝试使用以下内容
// Start method 1 var grbData = $.ajax({ type : "GET",url : "http://grb.sonoma.edu:81/getgrbs.PHP",data : "start=0&perPage=3"}).responseText; $("#ajaxDiv").html(grbData); // End method 1 // Start method 2 $.get("getgrbs.PHP",{ start : 0,perPage : 3},function(data) { $("#tst").html(data); },"html"); // End method 2
在此页面上:http://grb.sonoma.edu:81/paging.php从数据库加载数据.方法1似乎只在IE8中工作,但仅在刷新页面后才能使用.首次加载页面时,我得到“完成此操作所需的数据尚不可用”.错误.
我更喜欢方法1的原因是因为它让我可以访问表中的各个行.例如.每行都有一个类“爆发”.我在用
$(".burst").click(function() { $(".burst").css("background-color",""); $(this).css("background-color","yellow"); });
所有上述代码都封装在$(document).ready()中.我努力了
$("#ajaxDiv").load("getgrbs.PHP",perPage : 3});
但我得到的结果与方法2类似.
如何让click函数与方法2一起使用,或者让方法1在没有刷新的情况下在所有浏览器上运行?感谢您为此提供的任何帮助.
我需要在ajax中执行此操作(在没有jquery的情况下尝试了ajax,也没有运气),因为页面上的其他内容不会随着用户通过数据页面而改变.
在成功使用“成功”之后,我注意到点击行并具有bg颜色变化的能力消失了.所以我做了以下,似乎工作.不确定它是否是最好的方式.
var grbData = $.ajax({ type : "GET",data : "start=0&perPage=3",dataType : 'html',success: function (data) { $("#ajaxDiv").replaceWith(data); startInteraction(); } }); function startInteraction() { $(".burst").click(function() { $(".burst").css("background-color","yellow"); }); }
解决方法
尝试:
var grbData = $.ajax({ type : "GET",success: function (html) { $("#ajaxDiv").html(html); } });
它无法正常工作的原因是它在完成加载之前尝试使用你的html.代码的执行速度比返回结果的速度快.
为了保持您的点击事件,您可以使用.live,这样它将触发事件以便将来添加到页面中的元素,就像您的ajax代码一样.
$(document).ready( function () { $(".burst").live('click',function() { $(".burst").css("background-color","yellow"); }); });