#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. Я имею в виду … насколько я вижу, ваш код должен работать нормально… Я бы предпочел проверить то, в чем я уверен, прежде чем переходить к более сложным альтернативам, поэтому я полагаю, что вы, вероятно, уже это сделали, я не мог сказать наверняка, основываясь на том, что я знаю наверняка