Вы здесь

Как инициализировать скрипт автосабмита Better Exposed Filter при ajax переходе?

0

Есть вьюха, есть раскрытый фильтр по заголовку, подключены Better Exposed Filter, в настройках стоит автосабмит, кнопка скрыта.

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

p.s вообще сплошь и рядом сталкиваюсь с тем, что необходимо перезапускать скрипты, может есть другой способ, что бы через ajax переходы подхватывались скрипты?

Версия Drupal: 
7.x
Категория: 
AJAX
Связанные проекты: 
Better Exposed Filters
Вопрос задан 18.08.2017 - 17:33
Аватар пользователя im
im
21

Ответы

0

Почитайте наконец мат.часть про Drupal.behaviors.attach, Drupal.attachBehaviors, jQuery.once и context в Drupal.behaviors.attach.

Поскольку ничего не понятно как у вас что работает, резюмирую:
1. Все скрипты должны быть в Drupal.behaviors.attach
2. При самостоятельном обновлении части страницы в обход ajax фреймворка, нужно вызывать Drupal.attachBehaviors.

Никак по другому перезапускать скрипты вы не сможете.

Ответ дан 21.08.2017 - 20:47
Аватар пользователя xandeadx
xandeadx
1440

Я читал не раз про них, но в моем случае они не работают, либо я не правильно вызываю Drupal.attachBehaviors.

вот у меня есть событие загрузки новой страницы -

Barba.Dispatcher.on("newPageReady", function(currentStatus, oldStatus, container) {

где container - загруженный контент, то есть для меня он будет контекстом, я вызываю Behaviors

            Barba.Dispatcher.on("newPageReady", function(currentStatus, oldStatus, container) {
            Drupal.attachBehaviors($(container));

Но ничего не происходит. Как их вызывать?

Комментарий оставлен 24.08.2017 - 17:40
-1

Можно попробовать воспользоваться событием AjaxSuccess, продебажить, сделать правильные условия и в итоге инициализировать какой-то скрипт, кликнуть на кнопку или ещё что-то

$(document).ajaxSuccess(function(event, xhr, settings) {
 if ( settings.url == "ajax/test.html" ) {
     $( ".log" ).text( "Triggered ajaxSuccess handler. The ajax response was: " + xhr.responseText );
 }});
Ответ дан 18.08.2017 - 20:42
Аватар пользователя Apuox
Apuox
15

вопрос то в том - как сам автосабмит инициализировать?

Комментарий оставлен 18.08.2017 - 21:03
-2

Стандартно бихайва должна дергатся инициализаию смотреть в коде, на край используйте .on('DOMNodeInserted'

Ответ дан 20.08.2017 - 09:03