2016-09-30 70 views
1

基本上,我想知道是否有一种方法来绕过/关闭/不执行一个函数,如果id等于“x “或”y“。Jquery如果一个ID等于“X”或“Y”不运行功能

我已经安装了此功能,可以将锚链接固定到页面上各自的区域/锚点。即如果我点击该按钮,则将该页面动画化为该按钮所引用的区域。

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

    e.preventDefault(); 

    var target = this.hash; 
    var $target = $(target); 

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

...这是使用任何HREF有一个#。

我需要在同一页面上使用SCSS功能添加一个显示更多区域。我在这里添加了这个例子:https://codepen.io/ojbravo/pen/YPJpXe

它对自己有效,但使用上面的动画,因为它在href区域有一个#。因此,该页面在“显示更多”之前上下摆动。我讨厌它,并希望它消失

我想要做的是关闭这两个链接的页面上的锚点动画的ID为“show-rm”和“hide-rm”的链接是点击。

这是网页上的代码:

<div class="panel-wrapper-rm"> 
<a href="#show-rm" class="show-rm btn-rm" id="show-rm">Show Full Article</a> 
<a href="#hide-rm" class="hide-rm btn-rm" id="hide-rm">Hide Full Article</a> 
<div class="panel-rm"> 

<p>fkjadsljfal;s kadfjas jkdajfkl;das jfklajfkl;a jadkljfkadl jdjfl;da 
    jk fl;kadjf kl;asdjfkl jdaklfj akl;jd flk;ajd l;kjflk;adj 
    fkl;adjfkdj kl;adjfklda jlkajflka jlk;fj daklsjfkldj kaljfkl;adj 
    kl;fjadl ;jfal;jd fklj fkasjf l;kajalk;j fkl;dj klajdfakls;d 
    jfl;akdfj adkjfl ajfd 
</p> 



</div><!-- end panel --> 
<div class="fade-rm"></div> 
</div><!-- end panel-wrapper --> 

回答

5

您可以使用:not选择从您选择

$('a[href^="#"]:not(#show-rm,#hide-rm)') 

或者清洁.not方法

的排除一些选择.not()方法将最终为您提供更具可读性的 选择而不是将复杂的选择器或变量推送到:not() 选择器过滤器。在大多数情况下,这是一个更好的选择。

$('a[href^="#"]').not('#show-rm,#hide-rm')