Проблема в том, что при открытии страницы поиска все ссылки неактивны. Итак, я обнаружил, что проблема возникла из этого кода 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;
});
Если я добавлю //return false; ссылки работают. Но если я удалю return false; моя панель поиска запрещена, а затем открывается снова. Итак, каково будет решение?
В обработчике 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
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