Использование переменных в селекторах классов jquery - PullRequest
0 голосов
/ 26 мая 2011

У меня проблемы с использованием переменных в селекторах класса jQuery.Работает следующее:

$('.contactcapturepage > .question-container > .select-container > select').each(function () {...

Но следующее не работает

var pageType='.contactcapturepage';
$(pageType+' > .question-container > .select-container > select').each(function () {...

Как я могу использовать переменные в моей иерархии селектора классов?

Спасибо.

РЕДАКТИРОВАТЬ: В ответ на запрос дополнительного кода: я вызываю вспомогательную функцию следующим образом:

helper_FormMapper(existing.contact, 'objectToForm','.contactcapturepage');

Подпись помощника:

function helper_FormMapper(object,direction,pageType) {

А потом позжета же функция:

//$('.contactcapturepage > .question-container > .select-container > select').each(function () {
        $(pageType+' > .question-container > .select-container > select').each(function () {
            var propertyname = $(this).attr('name');
            $.log('processing select:'+propertyname);
            if (propertyname != 'country'
                && propertyname != 'state') {

                if (direction == 'objectToForm') {
                    $("select#" + propertyname + " option").each(function () { this.selected = (this.text == object[propertyname]); });
                }
                else {
                    object[propertyname] = $('#' + propertyname + ' :selected').text();
                }
            }
        });

Обратите внимание, что закомментированная строка работает, в то время как некомментированная версия не работает.

EDIT - после дальнейшего тестирования следующее также не работает:

var path = pageType + ' > .question-container > .text-container > input';
        $(path).each(function () {...

РЕДАКТИРОВАТЬ - но работает следующее:

var path = '.contactcapturepage > .question-container > .text-container > input';
        $(path).each(function () {...

Что здесь происходит!

РЕДАКТИРОВАТЬ: следующее также работает

pageType = '.contactcapturepage';
    $(pageType + ' > .question-container > .text-container > input').each(function () {

Таким образом, похоже, что это не имеет ничего общего с jQuery, а как-то связано с повреждением параметра функции.Вывод pageType в консоль показывает, что он не определен.

EDIT - Хорошо - много яйца на лице - ошибка в моем коде ... Очень жаль, что я потратил ваше время

1 Ответ

0 голосов
/ 26 мая 2011

Я не могу комментировать, поэтому мне придется написать это как ответ.Вы уверены, что функция внутри each () не вызывается, возможно, это так, но вы получаете какое-то исключение внутри нее.

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

$(pageType+' > .question-container > .select-container > select')

тогда я бы запустил это в консоли

$(pageType+' > .question-container > .select-container > select').length
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...