简体   繁体   English

带有onclick事件的HTML锚链接仅工作一次

[英]HTML anchor link with onclick event works only once

I am ashamed to say that I have an anchor issue. 我很to愧地说我有一个主播问题。 I am trying to use standard HTML anchor link to an anchor on the same page but after the first click (add #example on URL, it stops to work). 我正在尝试使用标准HTML锚链接链接到同一页面上的锚,但是在第一次单击后(在URL上添加#example,它将停止工作)。

//Link <a href="#example">Example headline</a>

//Anchor <h5><a id="example"></a>Example headline</h5>

The code is the same but for some reason when it runs inside jsfiddle it does not work as supposed probably because he can't handle with URL. 代码是相同的,但是由于某种原因,当它在jsfiddle中运行时,它不能按预期工作,可能是因为他无法使用URL处理。

https://jsfiddle.net/rmcardoso/mrzg8wLf/2/ https://jsfiddle.net/rmcardoso/mrzg8wLf/2/

I am trying to use jQuery to catch the behavior but for some reason I am not getting there. 我正在尝试使用jQuery来捕获行为,但是由于某种原因我没有到达那里。 I can access to the href but the animate is not working.. 我可以访问href,但是动画不起作用。

$(document).on("click",'a[href^="#"]',function(e) {

  /* WORKS!
  console.log(e);
  var element = document.getElementById("findmypartner");
  element.scrollIntoView({behavior: "smooth", block: "end", inline: "nearest"});
  */

  e.preventDefault();

  var target = e.target.hash,
  $target = $(target);

  //  $(document).stop().animate({
    //  'scrollTop': $target.offset().top }, 900, 'swing', function () {
    //  window.location.hash = target;
  //});

  $(document).animate({
    //scrollTop: $($.attr(element, 'href')).offset().top}, 500);
    scrollTop: $(e.target.hash).offset().top},500);
    console.log("here!");
  });
});

You have some extra curly brackets in your code... Probaly due to the fact that you had some at the end of lines and when commenting out, you forgot those... And re added. 您的代码中有一些多余的花括号……可能是由于您在行尾有一些花括号,而注释掉时却忘记了这些……并重新添加。 I don't know. 我不知道。

Indent your code correctly, that just helps. 正确缩进代码,这只会有所帮助。
Additionnally, jQuery was not loaded in your Fiddle. 另外,jQuery尚未加载到您的Fiddle中。

Now, instead of e.target.hash , you can use $(this).attr("href") . 现在,可以使用$(this).attr("href")代替e.target.hash $(this) is the clicked element. $(this)是单击的元素。

 $(document).on("click",'a[href^="#"]',function(e) { e.preventDefault(); var target = $( $(this).attr("href") ); $("html,body").animate({ scrollTop: target.offset().top },1500); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p>This is a test</p> <p>this is text text <a href="#example" rel="nofollow">Follow Anchor</a> <p>text texttext texttext texttext texttext texttext texttext texttext text text texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext texttext text</p> <h3 id="example"> This is headline for anchor </h3> <p>This is a test</p> 

Your Fiddle updated 您的小提琴已更新

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM