У меня есть базовая настройка вкладки jQuery. Все работало нормально, но мне требовался хеш в URL для указания активной вкладки, поэтому я добавил условие для проверки хеша. Теперь, когда страница загружается, она фактически активирует привязку и смещает страницу вниз. Почему не «вернуть ложь»; рабочий?
$(document).ready( function() {
$(".tabs a").click(function() {
$(".tabs a").removeClass("active");
$(".tabs a").addClass("button secondary");
$(this).attr("class","button active");
var href = $(this).attr("href");
$(href).parent().find("> .active").removeClass("active");
$(href).addClass("active");
return false;
});
if(window.location.hash) {
$(".tabs a[href$='"+window.location.hash+"']").click();
} else {
$(".tabs a:eq(0)").click(); //default to first tab
}
});
**
Вот некоторые обновления:
**
Если я просто введу фактическое значение хеша вместо извлечения его из window.location.hash, оно отлично работает.
$(".tabs a[href$='#Contact2']").click();
Нажатие на разные вкладки НЕ сдвигает страницу, только когда страница загружается и автоматически щелкает по вкладке на основе значения хеш-функции.
Если я помещаю условное выражение, а затем автоматически щелкаю без использования переменной в селекторе jquery, все работает нормально, если предположить, что хэш местоположения не соответствует хешу, который я нажимаю (странно, я знаю ...)
if(window.location.hash === "#Contact2") {
$(".tabs a[href$='#Contact4']").triggerHandler("click");
} else {
$(".tabs a:eq(0)").click(); //default to first tab
}
Это действительно не имеет особого смысла для меня. Кажется, что единственная проблема заключается в использовании window.location.hash в селекторе jquery ...