У меня есть рабочий обработчик clickevent (не знаю, правильно ли это для него) на странице, которая использует show/hide (например, вкладки), если вы нажмете на одну из ссылок на странице. Это прекрасно работает, но теперь я перехожу к другому вопросу.
Когда я ссылаюсь на одну из вкладок с другой страницы, например. /page-slug/# tabtoshow, он не отобразит нужную вкладку, она просто отобразит первую (открытую) вкладку. Я хочу, чтобы он отображал правильную вкладку, когда URL-адрес содержит один и тот же идентификатор, например #tabtoshow. Вкладки будут иметь тот же идентификатор, что и ссылка.
Это мой текущий скрипт.
$(function() {
$(".elevator a").click(function(evt) {
evt.preventDefault();
});
});
$(document).ready(function() {
$('a[href="#ondernemen"]').click(function() {
$(".active").removeClass("active");
$(this).parent('.label').addClass("active");
$('#ondernemen').slideDown(1000);
$('#ontdekken').slideUp(1000);
$('#groeien').slideUp(1000);
$('#spelen').slideUp(1000);
});
$('a[href="#groeien"]').click(function() {
$(".active").removeClass("active");
$(this).parent('.label').addClass("active");
$('#groeien').slideDown(1000);
$('#ontdekken').slideUp(1000);
$('#ondernemen').slideUp(1000);
$('#spelen').slideUp(1000);
});
$('a[href="#spelen"]').click(function() {
$(".active").removeClass("active");
$(this).parent('.label').addClass("active");
$('#spelen').slideDown(1000);
$('#ontdekken').slideUp(1000);
$('#groeien').slideUp(1000);
$('#ondernemen').slideUp(1000);
});
$('a[href="#ontdekken"]').click(function() {
$(".active").removeClass("active");
$(this).parent('.label').addClass("active");
$('#ontdekken').slideDown(1000);
$('#spelen').slideUp(1000);
$('#groeien').slideUp(1000);
$('#ondernemen').slideUp(1000);
});
$('body').on({
'mousewheel': function(e) {
if (e.target.id == 'el') return;
e.preventDefault();
e.stopPropagation();
}
})
$('a[href="#ontdekken"]').parent('.label').addClass("active");
});
Заранее спасибо!!
У вашего кода было некоторое повторение, я написал для вас более общую версию. Кроме того, я использовал location.hash
чтобы определить, какую вкладку активировать.
$(document).ready(function() {
var selector = "#ondernemen, #ontdekken, #groeien, #spelen";
$(".elevator a").click(function(evt) {
evt.preventDefault();
});
$(selector).click(function() {
var that = this;
$(".active").removeClass("active");
$(this).parent('.label').addClass("active");
$(selector).each(function() {
if ($(this).attr("id") !== $(that).attr("id")) {
$(this).slideUp(1000);
}
});
$(this).slideDown(1000);
});
$('body').on({
'mousewheel': function(e) {
if (e.target.id == 'el') return;
e.preventDefault();
e.stopPropagation();
}
});
$(location.hash).parent('.label').addClass("active");
});
$('a[href="#spelen"]').click(function()
и если $(location.hash)
имеет право, сделайте это с slideUp и slideDown. Вы тоже так думаете? Только я не знаю, как это закодировать ... Не могли бы вы мне помочь?
Если вы переходите на другую физическую страницу, а не на виртуальную страницу, вам нужно будет обрабатывать хэш на новой странице. Вы должны были бы получить доступ location
.hash или location.pathname
и сделать что - то на основе хэш - значения. Вы можете справиться с этим так:
$(document).ready(function() {
displayTab(location.hash);
});