Search code examples
javascriptjqueryhrefattr

jQuery set href of special anchor to href of next anchor tag


I want to find link child <a> and attach it to parent <a>. Here is my code. This returns same link.

html code

<div class="wrap">
  <ul class="main-ul">
   <li>
    <a class="child-link" href="link1"></a>
   </li>
  </ul>
  <a class="to-attach" href=""></a>   <<--to be link1
  <ul class="main-ul">
   <li>
    <a class="child-link" href="link2"></a>
   </li>
  </ul>
  <a class="to-attach" href=""></a>   <<--to be link2
  <ul class="main-ul">
   <li>
    <a class="child-link" href="link3"></a>
   </li>
  </ul>
  <a class="to-attach" href=""></a>   <<--to be link3
  .
  .
  .
  .
  .
</div>

jQuery code

jQuery(".main-ul").append("<a class='to-attach'></a>");  
var link = jQuery(".child-link").attr("href");
jQuery(".to-attach").attr("href", link);

please help me. Thanks.


Solution

  • You can use .attr() with callback function instead .each()

    $(".to-attach").attr("href", function(){
        return $(this).prev("ul").find(".child-link").attr("href");
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="wrap">
      <ul class="main-ul">
        <li>
          <a class="child-link" href="link1">child-link</a>
        </li>
      </ul>
      <a class="to-attach" href="">to-attach</a>   
      <ul class="main-ul">
        <li>
          <a class="child-link" href="link2">child-link</a>
        </li>
      </ul>
      <a class="to-attach" href="">to-attach</a>   
      <ul class="main-ul">
        <li>
          <a class="child-link" href="link3">child-link</a>
        </li>
      </ul>
      <a class="to-attach" href="">to-attach</a>   
    </div>