jQuery Parallax не прокручивается после изменения события click высоты другого элемента - PullRequest
0 голосов
/ 23 декабря 2018

Я использую Parallax.js на моем WordPress сайте.На одной из моих страниц у меня есть событие щелчка, и когда оно выполняется, оно добавляет класс к элементу (не элементу параллакса), который добавляет высоту элементу без параллакса.в любом случае, когда он будет выполнен, мой параллакс перестанет прокручиваться.

Я попытался повторно запустить параллакс для событий щелчка, и это не сработало.

Вот мой код jquery:

$('.architectural-films').bind('click', function(e){
    $(".section1").addClass("toggle");
    return false;
});

А вот мой css

.section1 {
    max-height: 0px;
    transition: max-height 1.00s ease-out;
    overflow: hidden;
}
.toggle{
    max-height: 5000px;
    transition: max-height 1.30s ease-in;
}

и мой html параллакса:

<div data-vc-full-width="true" data-vc-full-width-init="true" data-vc-stretch-content="true" data-vc-parallax="1.5" data-vc-parallax-o-fade="on" data-vc-parallax-image="http://new.sekanskin.com/wp-content/uploads/2018/12/windows-walls-floors.jpg" class="vc_row wpb_row vc_row-fluid what-we-do-service vc_row-has-fill vc_row-no-padding vc_general vc_parallax vc_parallax-content-moving-fade js-vc_parallax-o-fade" style="position: relative; left: -155px; box-sizing: border-box; width: 1440px;"><div class="wpb_column vc_column_container vc_col-sm-12 skrollable skrollable-before" data-5p-top-bottom="opacity:0;" data-30p-top-bottom="opacity:1;" style="opacity: 1;"><div class="vc_column-inner"><div class="wpb_wrapper"></div></div></div><div class="vc_parallax-inner skrollable skrollable-between" data-bottom-top="top: -50%;" data-top-bottom="top: 0%;" style="height: 150%; background-image: url(&quot;http://new.sekanskin.com/wp-content/uploads/2018/12/windows-walls-floors.jpg&quot;); top: -36.3243%;"></div></div>

И вот что я пытался повторно вызвать параллакс:

$('.architectural-films').bind('click', function(e){
    $(".section1").addClass("toggle");
        $(window).trigger('resize.px.parallax');
    return false;
});

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

1 Ответ

0 голосов
/ 23 декабря 2018

Вы используете старую и неподдерживаемую библиотеку параллакса.

Если вы не можете использовать какую-либо другую библиотеку, вам нужно изменить код в этом файле https://raw.githubusercontent.com/IanLunn/jQuery-Parallax/master/scripts/jquery.parallax-1.1.3.js.Вам необходимо добавить этот пользовательский прослушиватель событий в конструктор параллакса ($.fn.parallax):

// [...]
$window.bind('parallax-refresh', function (){
    $this.each(function() {
        firstTop = $this.offset().top;
    });
});
// [...]

, а затем вызвать событие обратно в главном сценарии:

$('.architectural-films').bind('click', function(e){
    $(".section1").addClass("toggle").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
        $(window).trigger('parallax-refresh');
    });
    return false;
});
...