Хранить массивы селекторов jquery? - PullRequest
0 голосов
/ 26 июля 2011

Ниже вы можете видеть, что я храню результаты селектора jquery в массиве. Затем я использую этот массив для выполнения других функций. Этот пример здесь не работает, он ведет себя так, как будто var / array является живым селектором, а не результатами, когда они были созданы.

function flipIt(elementId){
    if (window.jQuery){
        var thisVisibleArray = $('#' + elementId + ' div:visible');

        var thisInvisibleArray = $('#' + elementId + ' > div:visible');

        $(thisInvisibleArray).slideDown("fast");
        $(thisVisibleArray).slideUp("fast");


        /*
        if ($('#flip1').is(":visible")){
            $('#flip1').slideUp("fast", function(){
                $('#flip2').slideDown();
            });
        } else {
            $('#flip2').slideUp("fast", function(){
                $('#flip1').slideDown();
            });
        }*/
    }
}

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Чтобы выбрать невидимые элементы div, вы должны использовать не и не «>».А также 2 переменные, которые вы определили, уже являются массивом элементов jquery, поэтому вам не нужно использовать $ ().Попробуйте это

function flipIt(elementId){
if (window.jQuery){


    var thisVisibleArray = $('#' + elementId + ' div:visible');

    var thisInvisibleArray = $('#' + elementId + ' div:not(:visible)');

    thisInvisibleArray.slideDown("fast");
    thisVisibleArray.slideUp("fast");


    /*if ($('#flip1').is(":visible")){
        $('#flip1').slideUp("fast", function(){
            $('#flip2').slideDown();
        });
    } else {
        $('#flip2').slideUp("fast", function(){
            $('#flip1').slideDown();
        });

    }*/
}
}
1 голос
/ 26 июля 2011

Вы сохраняете выбранные элементы в переменной, а затем пытаетесь получить объект jQuery из другого объекта jQuery. Просто сделай:

thisInvisibleArray.slideDown("fast");
thisVisibleArray.slideUp("fast");

Кроме того, это не массивы, а объекты jQuery.

...