Smooth scroll working for navbar, but not other elements (arrows etc)










1














I have a Rails application that uses a jQuery smooth scrolling function. The smooth scroll works for the navbar links, but not for the 'scroll down' arrow or 'back to top' arrow. I've tried adding a script tag to implement the behavior directly on the element, but no luck. Any recommendations are appreciated!



Here is the scroll function -






// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






Here is the block containing the down arrow. The parens with (some text here) are not in my actual code, I just changed it for S/O. -






<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>












share|improve this question





















  • Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
    – arieljuod
    Nov 10 at 4:45










  • I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
    – Justin Cefai
    Nov 10 at 23:44
















1














I have a Rails application that uses a jQuery smooth scrolling function. The smooth scroll works for the navbar links, but not for the 'scroll down' arrow or 'back to top' arrow. I've tried adding a script tag to implement the behavior directly on the element, but no luck. Any recommendations are appreciated!



Here is the scroll function -






// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






Here is the block containing the down arrow. The parens with (some text here) are not in my actual code, I just changed it for S/O. -






<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>












share|improve this question





















  • Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
    – arieljuod
    Nov 10 at 4:45










  • I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
    – Justin Cefai
    Nov 10 at 23:44














1












1








1







I have a Rails application that uses a jQuery smooth scrolling function. The smooth scroll works for the navbar links, but not for the 'scroll down' arrow or 'back to top' arrow. I've tried adding a script tag to implement the behavior directly on the element, but no luck. Any recommendations are appreciated!



Here is the scroll function -






// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






Here is the block containing the down arrow. The parens with (some text here) are not in my actual code, I just changed it for S/O. -






<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>












share|improve this question













I have a Rails application that uses a jQuery smooth scrolling function. The smooth scroll works for the navbar links, but not for the 'scroll down' arrow or 'back to top' arrow. I've tried adding a script tag to implement the behavior directly on the element, but no luck. Any recommendations are appreciated!



Here is the scroll function -






// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






Here is the block containing the down arrow. The parens with (some text here) are not in my actual code, I just changed it for S/O. -






<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>








// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event)
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);


);






<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>





<div class="typebox" style="min-height: 119px;">
<div id="typed-strings">
<h3 class="type-active"><strong style="font-size: 20px; line-height: 1.5em;"> (some text here) <br> (some more text here) &nbsp; <br><br><a href="#web-apps"><%= image_tag "down-arrow.png", class: "down-arrow"%></a></strong></h3>
</div>
<span id="typed"></span>
<br />
</div>






jquery html ruby-on-rails scroll






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 9 at 21:19









Justin Cefai

2617




2617











  • Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
    – arieljuod
    Nov 10 at 4:45










  • I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
    – Justin Cefai
    Nov 10 at 23:44

















  • Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
    – arieljuod
    Nov 10 at 4:45










  • I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
    – Justin Cefai
    Nov 10 at 23:44
















Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
– arieljuod
Nov 10 at 4:45




Is the click triggering the callback? Did you check if target is found on that function? put a breakpoint on the line if (target.length) and you can inspect the target variable. Can you create a codepen/jsfiddle to reproduce the problem?
– arieljuod
Nov 10 at 4:45












I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
– Justin Cefai
Nov 10 at 23:44





I'm not super familiar with breakpoints yet, but here's a link to my site. www.justincefai.co
– Justin Cefai
Nov 10 at 23:44













1 Answer
1






active

oldest

votes


















0














I cannot find your code on the link, but seeing your website I can think of a few things:



1) your down arrow is not there when you set the click callback, it's added later with that typed effect so the click callback is not set on that A tag. I guess the library you used for that has some event to let you know that the effect is finished, then you can set the callback for that A tag



2) the back to top arrow has href="#" which is explicittly NOT selected for the click function with the line .not('[href="#"]'), I'm guessing you copied the function from somewhere else, you can add an id after the href for that back to top A tag and add an element wit that ID at the top of the site




EDIT: to fix the down arrow event listener, I would do this:



1st, move the function outside the parameters



function scroll_to_hash(event) 
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);




// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(scroll_to_hash);


2nd, I'm guessing you are using Typed.js, you have an onComplete callback https://mattboldt.com/typed.js/docs/, you can then set the click event for the down arrow on that callback on the options when you initialize the plugin



onComplete: function(self) 
$('a[href="#web-apps"]').click(scroll_to_hash)






share|improve this answer






















  • Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
    – Justin Cefai
    Nov 11 at 1:45










  • Check my last edit.
    – arieljuod
    Nov 11 at 1:53










  • Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
    – Justin Cefai
    Nov 11 at 3:25










  • I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
    – Justin Cefai
    Nov 11 at 3:53










  • Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
    – arieljuod
    Nov 11 at 4:02










Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53233405%2fsmooth-scroll-working-for-navbar-but-not-other-elements-arrows-etc%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














I cannot find your code on the link, but seeing your website I can think of a few things:



1) your down arrow is not there when you set the click callback, it's added later with that typed effect so the click callback is not set on that A tag. I guess the library you used for that has some event to let you know that the effect is finished, then you can set the callback for that A tag



2) the back to top arrow has href="#" which is explicittly NOT selected for the click function with the line .not('[href="#"]'), I'm guessing you copied the function from somewhere else, you can add an id after the href for that back to top A tag and add an element wit that ID at the top of the site




EDIT: to fix the down arrow event listener, I would do this:



1st, move the function outside the parameters



function scroll_to_hash(event) 
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);




// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(scroll_to_hash);


2nd, I'm guessing you are using Typed.js, you have an onComplete callback https://mattboldt.com/typed.js/docs/, you can then set the click event for the down arrow on that callback on the options when you initialize the plugin



onComplete: function(self) 
$('a[href="#web-apps"]').click(scroll_to_hash)






share|improve this answer






















  • Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
    – Justin Cefai
    Nov 11 at 1:45










  • Check my last edit.
    – arieljuod
    Nov 11 at 1:53










  • Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
    – Justin Cefai
    Nov 11 at 3:25










  • I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
    – Justin Cefai
    Nov 11 at 3:53










  • Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
    – arieljuod
    Nov 11 at 4:02















0














I cannot find your code on the link, but seeing your website I can think of a few things:



1) your down arrow is not there when you set the click callback, it's added later with that typed effect so the click callback is not set on that A tag. I guess the library you used for that has some event to let you know that the effect is finished, then you can set the callback for that A tag



2) the back to top arrow has href="#" which is explicittly NOT selected for the click function with the line .not('[href="#"]'), I'm guessing you copied the function from somewhere else, you can add an id after the href for that back to top A tag and add an element wit that ID at the top of the site




EDIT: to fix the down arrow event listener, I would do this:



1st, move the function outside the parameters



function scroll_to_hash(event) 
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);




// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(scroll_to_hash);


2nd, I'm guessing you are using Typed.js, you have an onComplete callback https://mattboldt.com/typed.js/docs/, you can then set the click event for the down arrow on that callback on the options when you initialize the plugin



onComplete: function(self) 
$('a[href="#web-apps"]').click(scroll_to_hash)






share|improve this answer






















  • Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
    – Justin Cefai
    Nov 11 at 1:45










  • Check my last edit.
    – arieljuod
    Nov 11 at 1:53










  • Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
    – Justin Cefai
    Nov 11 at 3:25










  • I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
    – Justin Cefai
    Nov 11 at 3:53










  • Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
    – arieljuod
    Nov 11 at 4:02













0












0








0






I cannot find your code on the link, but seeing your website I can think of a few things:



1) your down arrow is not there when you set the click callback, it's added later with that typed effect so the click callback is not set on that A tag. I guess the library you used for that has some event to let you know that the effect is finished, then you can set the callback for that A tag



2) the back to top arrow has href="#" which is explicittly NOT selected for the click function with the line .not('[href="#"]'), I'm guessing you copied the function from somewhere else, you can add an id after the href for that back to top A tag and add an element wit that ID at the top of the site




EDIT: to fix the down arrow event listener, I would do this:



1st, move the function outside the parameters



function scroll_to_hash(event) 
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);




// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(scroll_to_hash);


2nd, I'm guessing you are using Typed.js, you have an onComplete callback https://mattboldt.com/typed.js/docs/, you can then set the click event for the down arrow on that callback on the options when you initialize the plugin



onComplete: function(self) 
$('a[href="#web-apps"]').click(scroll_to_hash)






share|improve this answer














I cannot find your code on the link, but seeing your website I can think of a few things:



1) your down arrow is not there when you set the click callback, it's added later with that typed effect so the click callback is not set on that A tag. I guess the library you used for that has some event to let you know that the effect is finished, then you can set the callback for that A tag



2) the back to top arrow has href="#" which is explicittly NOT selected for the click function with the line .not('[href="#"]'), I'm guessing you copied the function from somewhere else, you can add an id after the href for that back to top A tag and add an element wit that ID at the top of the site




EDIT: to fix the down arrow event listener, I would do this:



1st, move the function outside the parameters



function scroll_to_hash(event) 
// On-page links
if (
location.pathname.replace(/^//, '') == this.pathname.replace(/^//, '')
&&
location.hostname == this.hostname
)
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length)
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate(
scrollTop: target.offset().top
, 1000, function()
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) // Checking if the target was focused
return false;
else
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
;
);




// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(scroll_to_hash);


2nd, I'm guessing you are using Typed.js, you have an onComplete callback https://mattboldt.com/typed.js/docs/, you can then set the click event for the down arrow on that callback on the options when you initialize the plugin



onComplete: function(self) 
$('a[href="#web-apps"]').click(scroll_to_hash)







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 11 at 1:53

























answered Nov 11 at 0:43









arieljuod

6,26911121




6,26911121











  • Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
    – Justin Cefai
    Nov 11 at 1:45










  • Check my last edit.
    – arieljuod
    Nov 11 at 1:53










  • Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
    – Justin Cefai
    Nov 11 at 3:25










  • I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
    – Justin Cefai
    Nov 11 at 3:53










  • Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
    – arieljuod
    Nov 11 at 4:02
















  • Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
    – Justin Cefai
    Nov 11 at 1:45










  • Check my last edit.
    – arieljuod
    Nov 11 at 1:53










  • Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
    – Justin Cefai
    Nov 11 at 3:25










  • I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
    – Justin Cefai
    Nov 11 at 3:53










  • Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
    – arieljuod
    Nov 11 at 4:02















Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
– Justin Cefai
Nov 11 at 1:45




Nice, thanks for that! Super easy fix for the back to top arrow. However, I don't quite follow how I would go about setting the callback for the down arrow.
– Justin Cefai
Nov 11 at 1:45












Check my last edit.
– arieljuod
Nov 11 at 1:53




Check my last edit.
– arieljuod
Nov 11 at 1:53












Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
– Justin Cefai
Nov 11 at 3:25




Yeah exactly, it's Typed.js. Ok, so the smooth scroll is working now (thanks!), but the typed.js behavior has stopped working. I'm going to continue to play around with it, but if you have any ideas I'm down to hear them!
– Justin Cefai
Nov 11 at 3:25












I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
– Justin Cefai
Nov 11 at 3:53




I found this thread where he seems to be addressing a similar issue, but the fix he recommends gives me the same error I was getting before. github.com/mattboldt/typed.js/issues/341
– Justin Cefai
Nov 11 at 3:53












Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
– arieljuod
Nov 11 at 4:02




Add your current code to the question, I'm not sure what it looks right now, show the part where you initialize the Typed function.
– arieljuod
Nov 11 at 4:02

















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53233405%2fsmooth-scroll-working-for-navbar-but-not-other-elements-arrows-etc%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

Edmonton

Crossroads (UK TV series)