2017-01-03 5 views
2

Я пытаюсь получить привязку для прямого перехода на аккордеон и открыть переключатель.Wordpress Divi Theme - Якорная ссылка на аккордеон toggle

Я нашел фрагмент кода в Google, который работает, но не полностью.

Когда я нахожусь на странице, на которой аккордеон включен, и я нажимаю на ссылку привязки, он правильно прокручивает аккордеон и открывает вкладку --- однако он обновляет страницу в это время и не остается где аккордеон.

Если я нажимаю на ссылку привязки с другой страницы, отличной от той, на которой аккордеон включен, все, что он делает, направляет меня на эту страницу, а не на аккордеон.

Любая помощь с этим будет замечательной.

URL-адрес является http://casafamilyserv.wpengine.com/resources/

Ссылка якорь кнопка «Сделать пожертвование» в правом верхнем углу страницы.

здесь является JS фрагмент кода:

<script> 
    jQuery(function($) { 
    //accordion 
    $('.menu-item-98 a').on('click', function(event){ 
     $('#my-accordion .et_pb_accordion_item_2 .et_pb_toggle_title').click(); 
     $("html, body").animate({ scrollTop: $('#my-accordion').offset().top }, 1000); 
    }); 
}); 

</script> 

Якорь ссылка, чтобы открыть вкладку гармошки "вклад/пожертвовать.

ответ

2

Просто добавьте return false;.

$('.menu-item-98 a').on('click', function(event){ 
    // sometimes you may also need to add 
    // event.preventDefault(); 

    donateScroll(); 

    return false; 
}); 

Это происходит потому, что ваша кнопка жертвуют имеет в URL в #donate.

<a href="/resources#donate">Make A Donation</a> 

По умолчанию браузеры будут пытаться найти id="donate" где-то на странице и перейти к нему. Добавление return false; блокирует поведение по умолчанию и позволяет вашему js полностью контролировать событие click.

Вы также можете добавить что-то для проверки существующего хэша приезжая из другой страницы:

function donateScroll(){ 
    $('#my-accordion .et_pb_accordion_item_2 .et_pb_toggle_title').click(); 
    $("html, body").animate({ scrollTop: $('#my-accordion').offset().top }, 1000); 
} 

if(window.location.hash == '#donate') { 
    donateScroll(); 
} 

Вместо того чтобы повторять колесико и нажмите логику, вы можете переместить его в одну функцию.

+0

Благодарим вас за помощь и разъяснение - добавление возврата false остановило страницу от обновления при нажатии кнопки - однако, если я нажму кнопку на другой странице, кроме страницы, на которой находится аккордеон, это просто загрузит страницу и не перейдет на аккордеон. Когда я добавил event.preventDefault(); он остановил кнопку, щелкнув все вместе. – Trisha

+0

@Trisha Я отредактировал свой ответ. –

+0

почти там! Теперь он загружает страницу и прокручивается вниз, но не открывает переключатель аккордеона. – Trisha

 Смежные вопросы

  • Нет связанных вопросов^_^