Вы можете обернуть $ () вокруг массива элементов DOM или вокруг объекта jQuery, но не вокруг массива объектов jQuery - PullRequest
2 голосов
/ 18 ноября 2011

Не совсем уверен, как сформулировать этот вопрос, поэтому он достаточно общий.(и перефразирую, после того, как я знаю, что я спрашиваю).Я полагаю, что проблема связана с переменными в функции JQuery .find().

Проблема: вы можете обернуть $() вокруг массива элементов DOM или вокруг объекта jQuery, но не вокруг массива объектов jQuery

Лучшее, что я могуможет сделать, в это время, предоставить пример здесь

Код проблемы в предыдущем скрипте, здесь:

////////////////Neither of the following works////////////////
//nodelevel = nodesWithMinuses.find('div.node.level' + levelnumber);
  nodelevel = $(nodesWithMinuses).find('div.node.level' + levelnumber);
////////////////Neither of the previous works////////////////

Ответы [ 3 ]

6 голосов
/ 18 ноября 2011

Очевидно, вы можете обернуть $() вокруг массива элементов DOM или вокруг объекта jQuery, но не вокруг массива объектов jQuery.

Попробуйте изменить эту строку:

var nodeWithMinus = thisplusminus.parent().parent();

на это:

var nodeWithMinus = thisplusminus.parent().parent()[0];

Это извлечет элемент DOM и превратит nodesWithMinuses в массив элементов DOM.

2 голосов
/ 18 ноября 2011

Переменная nodesWithMinuses представляет собой массив объектов jQuery.Вы не можете применить метод jQuery ни к чему другому, кроме объекта jQuery.У вас есть 2 варианта: либо вы объявляете nodesWithMinuses как объект jQuery и добавляете к нему объекты с помощью метода add:

var nodesWithMinuses = $();
//...
nodesWithMinuses.add(element);
// instead of nodesWithMinuses.push(element);

, либо находите способ преобразовать массив в объект jQuery:

$($.map(nodesWithMinuses,function(el,i){return el.get(0)})).find('div.node.level' + levelnumber);

или просмотрите массив и найдите элемент в каждом объекте за раз:

var result = $();
$.each(nodesWithMinuses,function(i,el){
    result.add(nodesWithMinuses.find('div.node.level' + levelnumber));
});
console.log(result);
1 голос
/ 18 ноября 2011

В вашем коде nodeWithMinuses - это массив, но вы пытаетесь обернуть его в функцию jQuery.Это не работает на массивах.Использование переменной в функции find в jQuery - это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...