jQuery so link переходит к следующему именованному якорю

Именованные якоря:<a name="foobar" class="nextChart"></a>

Ссылки:<a href="" class="next"></a>

Я пытаюсь.

$( "a.next" ).click(function() {
    var hash = $(this).next("a.nextChart").attr('href'); 
    location = hash;
});

Чего мне не хватает?

2 ответа

  1. Вы уверены, что именованный якорь является следующим братом в вашем HTML-документе?

    Кроме того, можно переписать код на:

    $("a.next").click(function(e) {
      e.preventDefault();
      var hash = $(this).parent().prev('.nextChart').attr('name');
      location = hash;
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <a name="foobar" class="nextChart"></a>
    <div class="SOMECLASS">
      <a href="" class="next">asd</a>
    </div>
    <a name="foobar1" class="nextChart"></a>
    <div class="SOMECLASS">
      <a href="" class="next">fds</a>
    </div>

  2. Более простым ответом было бы не слушать щелчки, а обновить hrefs, чтобы щелчок делал то, что вы хотите.

    $( "a.next" ).each(function() {
        $(this).attr('href', '#'+$(this).parent().next('a.nextChart').attr('href')); 
    });
    

    Затем, просто нажав на ссылку, он пойдет туда, куда ему нужно.