JQuery 集合数组突然变成 DOM HTMLDivElement

发布于 2024-11-28 17:50:46 字数 556 浏览 2 评论 0原文

在我的代码中,我有一个函数,它接受 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);

我被难住了。

In my code I have a function that accepts an array of JQuery collections and applies some code to each via a for-loop.

The problem is that as soon as I reference one it somehow becomes a HTMLDivElement instead of a collection object.

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(){ ...

it's called like this:

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

I'm stumped.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱的十字路口 2024-12-05 17:50:46

jQuery 集合数组是 DOM 元素的数组。

这样做:$('#myDiv')[0];
返回与以下内容相同: document.getElementByID('myDiv');

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

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

}

干杯

The jQuery collection array is an array of DOM elements.

Doing this: $('#myDiv')[0];
returns the same as: document.getElementByID('myDiv');

Solution:
Use $('.timetable').eq(index);

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

}

Cheers

绝不放开 2024-12-05 17:50:46

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

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

示例 - http://jsfiddle。净/8FeEf/1/

Using [i] on a jQuery object returns the dom element. If you want the jQuery object at a specific index use the .eq() function:

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

Example - http://jsfiddle.net/8FeEf/1/

丿*梦醉红颜 2024-12-05 17:50:46

使用 jQuery,您可以使用 .each 方法,然后必须“jquerify”对象:

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

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

您还可以使用 for,语法有点冗长。
在所有情况下,您都必须jquerify 对象。

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

With jQuery you can use the .each method, and after you must 'jquerify' the object :

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

A jquery collection is in fact an array of DOM elements.

You can also use a for, the syntaxe is a little bit more verbose.
In all case, you must jquerify the object.

Exemple : http://jsfiddle.net/FTcpD/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文