问题是当搜索页面打开时,所有链接都不活动。所以,我发现问题出现在这个JQUERY代码中:
var shouldShow = $.cookie('show_desc') == 'yep';
if( shouldShow ) { $('#searchunder').show(); $('body').animate({ paddingTop: 80 }); }
else { $('#searchunder').hide(); $('body').animate({ paddingTop: 25 }); }
// shows the group_desciption on clicking the noted link
$('#search').click(function() {
$('body').animate({ paddingTop: 80 });
$('#searchunder').show('fast');
$.cookie('show_desc', 'yep');
return false;
});
// hides the group_desciption on clicking the noted link
$('#close').click(function() {
$('body').animate({ paddingTop: 25 });
$('#searchunder').hide('fast');
$.cookie('show_desc', 'nope');
return false;
});
如果我添加 //返回false; 链接正在运行。但是,如果我删除 return false; 我的搜索栏正在隐藏,然后再次打开。那么解决方案是什么?
答案 0 :(得分:1)
在jQuery处理程序中,return false
执行两项操作:停止传播并阻止默认操作。
您显示的代码阻止链接的唯一方法就是 #search
和/或#close
元素。如果这是问题所在,你可以这样解决:
$('#search').click(function() {
if (!$(e.target).closest('a')[0]) { // Check if click was on `a` element
$('body').animate({ paddingTop: 80 });
$('#searchunder').show('fast');
$.cookie('show_desc', 'yep');
return false;
}
});
(同样适用于#close
。)
...如果点击不在a
元素上,则只运行相关代码。
注意:以上假设#search
和#close
本身不是a
元素,而且 <{em> <{em>} a
元素。例如,它们包含链接,但不是链接,也不包含 链接。这也可以解决,它只需要更多的代码:而不是
if (!$(e.target).closest('a')[0]) { // Check if click was on `a` element
它将是
if (!$(e.target).parentsUntil(this).filter('a')[0]) { // Check if click went through an `a` element en route to us