2013-08-05 77 views
0

这只是找到第一个链接。为什么它没有循环遍历所有的链接?遍历所有链接并找到href

http://jsfiddle.net/infatti/7r4fV/

var alertHref = $('#myLinks').find('a').attr('href'); 

$('#myDivs').find(alertHref).css('background-color', 'yellow'); 

<span id="myLinks"> 
    <a href="#div1">link 1</a> 
    <a href="#div2">link 2</a> 
</span> 
<hr /> 
<div id="myDivs"> 
    <div id="div1">div 1</div> 
    <div id="div2">div 2</div> 
</div> 
+0

循环使用'。每()'。 – j08691

+0

因为你没有写一个循环。 – SLaks

+0

一个肮脏的方式:http://jsfiddle.net/K9m96/1/ – Ian

回答

1

使用jQuery.each遍历多个。

使用您的Fiddle

var $hrefs = $('#myLinks').find('a[href]'); 
var $myDivs = $('#myDivs'); 

$hrefs.each(function(index,link){ 
    $(link.hash,$myDivs).css('background-color','yellow'); 
}); 

你也使用mapfiddle):

var hrefs = $('#myLinks').find('a[href]') 
          .map(function(){ return this.hash; }) 
          .get(); 

$('#myDivs').find(hrefs.join(',')).css('background-color','yellow'); 
2

find('a')返回所有a元素的列表,但.attr('href')返回的href只有第一个链接。

您通过a元素需要循环:

http://jsfiddle.net/Gj2R9/

$('#myLinks a').each(function() { 
    $($(this).attr('href')).css('background-color', 'yellow'); 
}); 
+0

感谢您在find和attr之间的澄清。 – simple