jQuery / JS - 如何在条件中排除具有特定 href 的 <a>?
jQuery / JS - How can I exclude <a> with specific href in conditions?
我试图根据它们的 href
值将特定 <a>
排除到 if 语句中。更具体地说,我在单击任何 <a>
时显示预加载器 div,触发 javascript
或包含 #
的除外。
这让我的用户在等待页面加载时看到一个漂亮的屏幕。
我写过这个小js东西:
$('a').click(function() {
var href = $(this).attr('href');
//my conditions
if ((href != '#') || (href != 'javascript:void(0);')) {
$('#preloader').fadeIn("fast");
}
});
//Showing preloader
$(window).load(function() {
$('#preloader').fadeOut("slow");
});
我的声明排除了包含 #
的链接,但对于那些包含 javascript:void(0);
的链接,它不会。这是我的问题。
我究竟做错了什么?语句或值是否有错误?
我可以想到两种直接的方法来解决给定代码的问题:
您的条件不正确。 if((href != '#') || (href != 'javascript:void(0);'))
应该是 if(href != '#' && href != 'javascript:void(0);')
最好从查询本身中排除不相关的元素:
$('a').not('[href="#"]').not('[href="javascript:void(0);"]).click(function() {
$('#preloader').fadeIn("fast");
});
参见 jQuery 的 Attribute Not Equal Selector。
这个答案可能对某人有帮助..和另一种检查方式
if($(this).is(':not([href^="#"]):not([href^="javascript:"])')){
$('#preloader').fadeIn("fast");
}
$('a').on('click',function(e){
e.preventDefault();
if($(this).is(':not([href^="#"]):not([href^="javascript:"])')){
alert('Good');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:void(0);">
click
</a><br />
<a href="#">
click
</a><br />
<a href="go">
click
</a><br />
我试图根据它们的 href
值将特定 <a>
排除到 if 语句中。更具体地说,我在单击任何 <a>
时显示预加载器 div,触发 javascript
或包含 #
的除外。
这让我的用户在等待页面加载时看到一个漂亮的屏幕。
我写过这个小js东西:
$('a').click(function() {
var href = $(this).attr('href');
//my conditions
if ((href != '#') || (href != 'javascript:void(0);')) {
$('#preloader').fadeIn("fast");
}
});
//Showing preloader
$(window).load(function() {
$('#preloader').fadeOut("slow");
});
我的声明排除了包含 #
的链接,但对于那些包含 javascript:void(0);
的链接,它不会。这是我的问题。
我究竟做错了什么?语句或值是否有错误?
我可以想到两种直接的方法来解决给定代码的问题:
您的条件不正确。
if((href != '#') || (href != 'javascript:void(0);'))
应该是if(href != '#' && href != 'javascript:void(0);')
最好从查询本身中排除不相关的元素:
$('a').not('[href="#"]').not('[href="javascript:void(0);"]).click(function() {
$('#preloader').fadeIn("fast");
});
参见 jQuery 的 Attribute Not Equal Selector。
这个答案可能对某人有帮助..和另一种检查方式
if($(this).is(':not([href^="#"]):not([href^="javascript:"])')){
$('#preloader').fadeIn("fast");
}
$('a').on('click',function(e){
e.preventDefault();
if($(this).is(':not([href^="#"]):not([href^="javascript:"])')){
alert('Good');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:void(0);">
click
</a><br />
<a href="#">
click
</a><br />
<a href="go">
click
</a><br />