Javascript 使用:not选择器
我有一个不同部分的网站。我有jQuery在这些部分之间滑动。 但是现在我在一个部分中有一个链接指向另一个部分 HTML:Javascript 使用:not选择器,javascript,jquery,Javascript,Jquery,我有一个不同部分的网站。我有jQuery在这些部分之间滑动。 但是现在我在一个部分中有一个链接指向另一个部分 HTML: <div class="section" id="one"> <div class="row"> <p>This is some text</p> </div> <div class="row"> &l
<div class="section" id="one">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#" onclick="scrollOrderNow()"><img src="button"/></a>
</div>
</div>
<div class="section" id="tow">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#" onclick="scrollOrderNow()"><img src="button"/></a>
</div>
</div>
<div class="section" id="ordernow">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#" onclick="scrollOrderNow()"><img src="button"/></a>
</div>
</div>
<div class="section" id="four">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#" onclick="scrollOrderNow()"><img src="button"/></a>
</div>
</div>
问题是,如果我单击链接scrollOrderNow()
,页面会滑到订单页面,然后又滑回该部分,因为链接位于该部分
你能帮我弄清楚吗
谢谢大家! 您需要将
return false
放入scrollOrderNow()
函数中
function scrollOrderNow(){
$('html,body').animate({
scrollTop: $("#ordernow").offset().top
}, 1000);
return false;
}
这样,您的链接将不会发生反应,散列也不会附加到URL,从而使页面保持原样。您可以使用单键单击处理程序,根据在节中单击的元素确定要执行的操作。为此,最好通过给可单击元素一个类来区分它:
<div class="section" id="four">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#"><img src="button" class="scroll-to-order"/></a>
</div>
</div>
使用
event.preventDefault()
方法比简单地返回false要好得多。返回false还有其他您没有提到的含义,即它还可以防止事件冒泡。@BenM您可能是对的-但在尝试阻止事件时,我实际上从未需要冒泡一些东西,所以这可能就是我没有想到的原因:)我尝试添加事件。preventDefault()并返回false;但它们都不起作用。我给你做了一个测试:你能再找我一次吗?@Blacktoko好吧,它在Chrome上对我有效-你试过什么浏览器?你清除缓存了吗?
<div class="section" id="four">
<div class="row">
<p>This is some text</p>
</div>
<div class="row">
<a href="#"><img src="button" class="scroll-to-order"/></a>
</div>
</div>
$('div.section').on('click', function(evt) {
var $target = $(evt.target);
if ($target.is('.scroll-to-order')) {
// the image itself was clicked, so scroll to ordernow
$('html,body').animate({
scrollTop: $("#ordernow").offset().top
}, 1000);
} else {
// something else inside the section was clicked, scroll to section
$.scrollTo($(this), 800);
}
});