查找与jQuery最近的链接

时间:2011-09-05 16:07:58

标签: jquery

我有一个类似于此的项目列表:

<ul>
  <li>
    <h3 class="headings"> <a href="page1.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a href="#" class="linktoitem">Click Here</a> </div>
  </li>
  <li>
    <h3 class="headings"> <a href="page2.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a href="#" class="linktoitem">Click Here</a> </div>
  </li>
  <li>
    <h3 class="headings"> <a href="page3.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a href="#" class="linktoitem">Click Here</a> </div>
  </li>

我的目标是在同一个li里面的h3里面添加Click Here linkk。我正试图这样做:

$('li').each(function(){
    var linkitem = $('.linktoitem').closest('h3').find('a').attr('href');
    $('a.linktoitem').attr('href' , linkitem) 
});

不幸的是链接是未定义的。

任何帮助都非常感激。

4 个答案:

答案 0 :(得分:2)

你可以这样做:

$('li').each(function(){
    var linkitem = $('h3 a', this).attr('href');
    $('a.linktoitem', this).attr('href' , linkitem) 
});

如果我的心灵阅读证明是正确的:你想要实现这个HTML

<ul>
  <li>
    <h3 class="headings"> <a href="page1.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a class="linktoitem" href="page1.html">Click Here</a> </div>
  </li>
  <li>
    <h3 class="headings"> <a href="page2.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a class="linktoitem" href="page2.html">Click Here</a> </div>
  </li>
  <li>
    <h3 class="headings"> <a href="page3.html"></a> </h3>
    <div class="details">
      <p>Item Details</p>
      <a class="linktoitem" href="page3.html">Click Here</a> </div>
  </li>
</ul>

在这里摆弄:http://jsfiddle.net/79ghE/

答案 1 :(得分:2)

像这样试过

$(document).ready(function (){
    $('.details a', 'li').each(function(){
        alert($(this).attr('href'));
    });
});

live example

答案 2 :(得分:2)

你的问题是closest只找到祖先,而你正在寻找父母的兄弟姐妹:

 var linkitem = $('.linktoitem').parent().siblings('h3').find('a').attr('href')

其他答案效率更高,但我认为指出错误会很有用。

答案 3 :(得分:1)

你应该这样做:

$('li').each(function(){
var href = $(this).children('h3').children('a').attr('href');
$(this).find('.linktoitem').attr('href',href);
})