Массив коллекции JQuery внезапно становится DOM HTMLDivElement - PullRequest
2 голосов
/ 10 августа 2011

В моем коде у меня есть функция, которая принимает массив коллекций JQuery и применяет некоторый код к каждому через цикл for.

Проблема в том, что как только я ссылаюсь на него, он становится HTMLDivElement вместо объекта коллекции.

function vacant_now($timetables, now){
console.log("1:" + $timetables);//still fine
for (var i=0; i < $timetables.length; i++){
    console.log("2:" + $timetables[i]);//problem is here
    var $timetable = $timetables[i];
    console.log("3:" + $timetable);
    $timetable.find(".booking").each(function(){ ...

это называется так:

vacant_now($page.find(".timetable"), now);

Я в тупике.

Ответы [ 3 ]

3 голосов
/ 10 августа 2011

Массив коллекции jQuery - это массив элементов DOM.

Делаем это: $('#myDiv')[0]; возвращает так же, как: document.getElementByID('myDiv');

Решение: Используйте $('.timetable').eq(index);

for (var i=0; i < $timetables.length; i++){
    $timetables.eq(i);

}

Приветствия

2 голосов
/ 10 августа 2011

Использование [i] для объекта jQuery возвращает элемент dom.Если вы хотите, чтобы объект jQuery имел определенный индекс, используйте функцию .eq ():

console.log("2:" + $timetables.eq(i));

Пример - http://jsfiddle.net/8FeEf/1/

1 голос
/ 10 августа 2011

С помощью jQuery вы можете использовать метод .each, и после того, как вы должны 'jquerify' объект:

function vacant_now($timetables, now) {
    $timetables.each(function() {
        var $timetable = $(this);
    });
}

Коллекция jquery на самом деле является массивом элементов DOM.

Вы также можете использовать for, синтаксис немного более многословен. В любом случае вы должны jquerify объект.

Пример: http://jsfiddle.net/FTcpD/

...