jquery数组混淆

时间:2011-07-22 08:56:46

标签: javascript jquery arrays

我有一个网页,其中有一堆用datatable jquery插件装饰的表。加载页面时,它们被隐藏。然后我有一个函数根据索引切换它们:

function expand_job(i) {
    $(".dataTables_wrapper")[i].show();
}

但它没有用。浏览器抱怨show()不是一个函数。作为一种解决方法,我正在做这样的事情:

function expand_job(i) {
    $(".dataTables_wrapper").each( function(idx) {
        if ( i == idx ) {
            $(this).slideToggle(300);
        }
    });
}

工作正常,但是.....我不能放过这个。

那么为什么第一段代码不起作用呢?是因为[i]将jquery对象带入普通JS对象并因此丢失了jquery功能吗?

谢谢,

2 个答案:

答案 0 :(得分:3)

使用.eq()

$(".dataTables_wrapper").eq(i).show();

jQuery数组包含每个索引的底层DOM元素,因此当您访问它们时,DOM函数可用,但不是jQuery方法。

答案 1 :(得分:1)

$(".dataTables_wrapper")[i]

返回一个std javascript对象,而不是一个jQuery对象,所以你可以:

$($(".dataTables_wrapper")[i]).show()

或使用第n个孩子或类似的

相关问题