【问题标题】:jQuery Object array notationjQuery 对象数组表示法
【发布时间】:2012-12-08 04:49:51
【问题描述】:

我是 jQuery 新手,我在理解它的对象数组表示法时遇到了一些麻烦。阅读 jQuery 文档和this article,您似乎可以通过执行类似的操作来引用选择器返回的对象中的第 n 个项目

$('.foo')[n];

对吗? 我应该能够串联使用 jQuery 操作/效果函数吗?类似的东西(这对我不起作用)

$('.foo')[0].hide();

我也试过了,没用:

var arr = $('.foo').get();
arr[0].hide();

我的语法有问题吗?做我想做的事情的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: jquery-selectors jquery


    【解决方案1】:

    [0] 数组表示法和.get() method 都返回对 jQuery 对象中的 DOM 元素的引用,并且您不能对 DOM 元素使用 jQuery 方法。

    试试eq() method,因为它返回一个新的jQuery对象:

    $('.foo').eq(0).hide();
    

    还要注意,使用数组表示法或.get() 来获取对 DOM 元素的引用意味着您可以然后直接访问 DOM 元素的属性,例如:

    var firstElId = $('.foo')[0].id;
    

    ...另外注意$('.foo')[0] 将是undefined,如果没有匹配'.foo' 选择器的元素,$('.foo')[0].id 将给出错误。

    【讨论】:

    • 谢谢!这正是我需要知道的。
    【解决方案2】:

    当您将 jQuery 对象作为数组引用时,您会得到一个 DOM 元素。您需要将其转换回 jQuery 对象才能使用 .hide() 等方法

    var bar = $('.foo')[n];
    var $bar = $(bar);
    
    $bar.hide();
    

    或者只使用 jQuery 的 eq() 方法:

    var bar = $('.foo').eq(n);
    bar.hide();
    

    【讨论】:

    • 第一个例子有效,但它是一种相当繁重的方法。最好像第二个示例一样简单地使用.eq()
    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多