2011-04-01 97 views
1

这里是到目前为止我的代码:jQuery - 如何将属性rel添加到多个链接?

$('#floorplans img').each(function() { 
    $('#floorplans a').each(function() { 
     $(this).attr('rel','lightbox'); 
    }); 
}); 

它运作良好,到目前为止,但我需要做同样的事情也#gallery。是否有可能完成此操作,而不必为#gallery再次编写相同的代码?

谢谢!

+1

我不能看看为什么你在一个循环中使用一个循环,其中一个循环就足够了。 – artshpakov 2011-04-01 12:04:19

+0

嗨。基本上,我想将rel =“lightbox”添加到链接“”中的图像......没有2个循环,它会将rel添加到所有链接,对不对? – Cris 2011-04-01 12:14:59

回答

1

没有看过您的标记,这样的事情可能工作:

$('#floorplans img, #gallery img').each(function() { 
    $('a').each(function() { 
     $(this).attr('rel','lightbox'); 
    }); 
}); 

HTH

更新: 我仍然不认为这是正确的, 你不使用你已要素在外部循环中选择,所以它是多余的。 而且我认为你正在多次设置rel attr因为它。 我还没试过,但我认为你应该只使用一个循环,在那里你选择有图像的链接。

$('#floorplans a:has(img), #gallery a:has(img)').each(function() { 
     $(this).attr('rel','lightbox'); 
}); 
+0

我已经删除了我自己的,类似的答案:) – Guidhouse 2011-04-01 12:06:50

+0

优秀。:)快速修复 – Cris 2011-04-01 12:20:47

0

您可以定义功能,使用它,比如:

var addRel = function(selector) { 
    $(selector).each(function() { 
     $(this).attr('rel','lightbox'); 
    }); 
}; 

addRel('#floorplans a'); 
addRel('#gallery a'); 
+0

太棒了!谢谢:) – Cris 2011-04-01 12:17:10

2

$('#floorplans img a, #gallery img a').attr('rel', 'lightbox'); 

不能做?

更新:我有“IMG”和“A”后到前,应该是所有的“A”含有“IMG”内部“#Div”,像这样:

$('#floorplans a:has(img), #gallery a:has(img)').attr('rel', 'lightbox') 
+0

感谢您的意见。我已经尝试过了,它不起作用...... – Cris 2011-04-01 12:39:57

+0

对不起,这确实有效:'$('#floorplans a:has(img),#gallery a:has(img)')。 attr('rel','lightbox');' – Treborbob 2011-04-01 15:55:04