Использование переменных в селекторах классов jquery

#jquery #jquery-selectors

#jquery #jquery-селекторы

Вопрос:

У меня возникли проблемы с использованием переменных в селекторах классов 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'
                amp;amp; propertyname != 'state') {

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

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

РЕДАКТИРОВАТЬ — После дальнейшего тестирования следующее также не работает:

 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 на консоль показывает его как неопределенный.

РЕДАКТИРОВАТЬ — Ок — много ошибок на лице — ошибка в моем коде… Очень сожалею, что потратил ваше время впустую

Комментарии:

1. Это должно сработать. Что-то еще идет не так. Может быть, вы могли бы опубликовать больше кода, который не работает?

2. Очень сожалею, ребята — ошибка в моем коде…

Ответ №1:

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

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

$(PageType ' > .question-контейнер > .select-контейнер > выбрать')

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

$(PageType ' > .question-контейнер > .select-контейнер > выбрать').длина

Комментарии:

1. Ну, это работает в жестко запрограммированной форме, но не в форме переменной. Кроме того, консоль Chrome Javascript не сообщает ни о каких ошибках в любом случае.

2. если вы используете chrome, то я бы установил точку останова в этой строке $(pageType ' > .question-container > .select-container > select') затем я бы запустил это в консоли $(pageType ' > .question-container > .select-container > select').length

3. Я имею в виду … насколько я вижу, ваш код должен работать нормально… Я бы предпочел проверить то, в чем я уверен, прежде чем переходить к более сложным альтернативам, поэтому я полагаю, что вы, вероятно, уже это сделали, я не мог сказать наверняка, основываясь на том, что я знаю наверняка