JQuery集合数组突然变成了DOM HTMLDivElement

时间:2011-08-10 11:01:52

标签: javascript jquery dhtml

在我的代码中,我有一个接受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 个答案:

答案 0 :(得分:3)

jQuery集合数组是一个DOM元素数组。

执行此操作:$('#myDiv')[0]; 返回与:document.getElementByID('myDiv');

相同

<强>解决方案: 使用$('.timetable').eq(index);

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

}

干杯

答案 1 :(得分:2)

在jQuery对象上使用[i]返回dom元素。如果你想在特定索引处使用jQuery对象,请使用.eq()函数:

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

示例 - http://jsfiddle.net/8FeEf/1/

答案 2 :(得分:1)

使用jQuery,您可以使用.each方法,并在必须'jquerify'对象之后:

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

jquery集合实际上是一个DOM元素数组。

你也可以使用for,语法更加冗长。 在所有情况下,你必须jquerify对象。

例如:http://jsfiddle.net/FTcpD/