Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用:not选择器_Javascript_Jquery - Fatal编程技术网

Javascript 使用:not选择器

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

我有一个不同部分的网站。我有jQuery在这些部分之间滑动。 但是现在我在一个部分中有一个链接指向另一个部分

HTML

    <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);
    }
});