我通过Ajax加载内容,然后我将拥有像$('。my_content_class')这样的元素,并像这样在$('。my_content_class')中加载数据。 ,但是如何匹配我加载到.my_content_class的新内容中的所有元素?我尝试过但根本没有效果。如何选择jQuery中加载的Ajax内容中的所有链接?
$('.my_content_class a').each(function()
{
doSomething($(this));
});
我通过Ajax加载内容,然后我将拥有像$('。my_content_class')这样的元素,并像这样在$('。my_content_class')中加载数据。 ,但是如何匹配我加载到.my_content_class的新内容中的所有元素?我尝试过但根本没有效果。如何选择jQuery中加载的Ajax内容中的所有链接?
$('.my_content_class a').each(function()
{
doSomething($(this));
});
实际上你可以从你的Ajax内容做到这一点直接如果需要的话,而无需将其加载到另一个容器
$('a', content_returned_from_ajax).each(function() {
//dostuff
});
您必须使用jQuery的live()函数。它是在jQuery 1.3中添加的。
$('.my_content_class a')
是做它的方式。您可能遇到的情况是您在加载内容之前运行该功能。 AJAX异步工作,因此在继续下一行代码之前,脚本不会结束,直到内容加载完毕。您应该将代码放在load
方法回调中,以便在AJAX请求完成他的工作后执行。
var url = 'http://example.com/test.html';
var data = {var1: foo, var2: bar};
$('.my_content_class').load(url, data, function() {
// this will be executed after the content was successfully loaded
});
从我可以在文档阅读回调调用一次AJAX完成其工作,我不知道这是否是实际内容加载到DOM树后。你需要自己弄清楚,如果它已经完成,你必须在更新DOM后在回调函数中创建一些小的延迟才能启动。 setTimeout
可能会来得方便,但首先我会确保你需要那部分。
+1的详细答案。 – rahul 2009-08-28 07:16:31
可以使用load函数的回调参数知道装载完成的确切时间,然后你可以选择你的元素:
$('.my_content_class').load(url, function() {
var anchors = $('a', this); // all loaded anchor elements
});
我用这个,但是其他的答案也不错啊...... – newbie 2009-08-28 07:17:29