使用
将内容加载到页面后div.load('page.php');
我需要从页面获取所有链接以更改它们。所以我写了这个:
div.load('page.php', function() {
links = $('a');
alert(links.length);
for(i=0 ; i<links.length ; i++
{
link = $('a:nth-child('+(i+1)+')');
alert(link.attr('href'));
}
});
此代码的结果是: - 第一个alert()返回正确的链接数量,但它不是DOM对象,所以我无法使用它更改href属性:links [i] .attr('href','changed') 我必须逐个循环获取链接,但是这个方法只返回page.php中的第一个链接和来自网站的所有链接都不会改变。
有人知道它是怎么做的吗?
答案 0 :(得分:3)
你可以这样做:
div.load('page.php', function() {
$('a').each(function(index){
alert($(this).attr('href'));
});
});
您可以更改自己的href
:
div.load('page.php', function() {
$('a').each(function(index){
$(this).attr('href', 'whatever');
});
});
答案 1 :(得分:1)
如果您只需要修改已加载内容中的所有链接,请使用a context,如下所示:
div.load('page.php', function(data) {
$('a', data).attr('href', '#');
});
//or, if they're interdependently changed, something like this...
div.load('page.php', function(data) {
$('a', data).attr('href', function(i, href) {
return href + "?tracking=1"; //append ?tracking=1
});
});
这会找到所有<a>
,但只会在page.php
返回的响应中找到,所以只有您刚刚加载的锚点。格式为$(selector, context)
,如果您关闭context
,则为document
,因此$('a')
之类的内容确实 $(document).find('a')
,它是document
以外的上下文,您只是说$(data).find('a')
,只获取您想要的链接。