JQuery PageWalkthrough несколько проходов на одной странице

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

Я использую этот плагин: https://github.com/jwarby/jquery-pagewalkthrough. Хотя я могу заставить каждую пошаговую работу работать независимо друг от друга, если я каким-либо образом объединю код на одной и той же странице, второй проход никогда не сработает.

Следующие блоки кода в настоящее время находятся в файле main.js, Это код для первого прохождения:

$('#division').on('click', function(e){
    $('#division').pagewalkthrough('show');
    $('#division').pagewalkthrough({
        name: 'division',
        steps: [{
            wrapper: '#slide12 ftop',
            popup: {
                content: '#dividewalkthrough-1',
                type: 'modal'
            }
        }],
        onLoad: true
    });
});

И второй проход:

$('#multiply').on('click', function(e){
    $('#multiply').pagewalkthrough('show');
    $('#multiply').pagewalkthrough({
        name: 'multiply',
        steps: [{
            wrapper: '#slide10 .ftop',
            popup: {
                content: '#walkthrough-1',
                type: 'tooltip',
                position: 'bottom'
            }
        }, {
            wrapper: '#slide10 .fsol',
            popup: {
                content: '#walkthrough-2',
                type: 'tooltip',
                position: 'bottom',
            },
            onEnter: function(){
                $('#slide10 .fsol').show();
                return true;
            },
            onLeave: function(){
                var bcol3 = $('#slide10 .fsol .bcol3').val(),
                bcol4 = $('#slide10 .fsol .bcol4').val(),
                bcol5 = $('#slide10 .fsol .bcol5').val(),
                bcol6 = $('#slide10 .fsol .bcol6').val();
                if(bcol3 != "" && bcol4 != "" && bcol5 != "" && bcol6 != ""){
                    return true;
                }else{
                    alert('You must fill in each column');
                    return false;
                }
            }
        }, {
            wrapper: '#slide10 .ssol',
            popup: {
                content: '#walkthrough-3',
                type: 'tooltip',
                position: 'bottom'
            },
            onEnter: function(){
                $('#slide10 .ssol').show();
                return true;
            },
            onLeave: function(){
                var bcol3 = $('#slide10 .ssol .bcol3').val(),
                bcol4 = $('#slide10 .ssol .bcol4').val(),
                bcol5 = $('#slide10 .ssol .bcol5').val();
                if(bcol3 != "" && bcol4 != "" && bcol5 != ""){
                    return true;
                }else{
                    alert('You must fill in each column');
                    return false;
                }
            }
        }],
        onLoad: true
    });
});

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

Какие-нибудь мысли?

1 ответ

Продолжая читать и исследовать, я наткнулся на эту заметку: https://github.com/jwarby/jquery-pagewalkthrough.

Изменяя способ, которым я назвал проходные, они теперь отображаются правильно. Теперь я называю проходную так:

$('#multiply').on('click', function(){
    $.pagewalkthrough('show', 'multiply');
});

Вместо старого способа:

$('#division').on('click', function(e){
    $('#division').pagewalkthrough('show');
});

Надеюсь, это поможет кому-то еще позже.

Другие вопросы по тегам