在我的代码中,我有一个接受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);
我很难过。
答案 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));
答案 2 :(得分:1)
使用jQuery,您可以使用.each
方法,并在必须'jquerify'对象之后:
function vacant_now($timetables, now) {
$timetables.each(function() {
var $timetable = $(this);
});
}
jquery集合实际上是一个DOM元素数组。
你也可以使用for
,语法更加冗长。
在所有情况下,你必须jquerify对象。