2011-07-22 148 views
2

我有一堆用jQuery数据表插件装饰的表格。当页面被加载时,它们被隐藏。然后我有一个功能,根据索引切换它们: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); 
     } 
    }); 
} 

这工作正常,但它是.....我只是不能让这个去。

那么为什么第一块代码不起作用?这是因为[我]把一个jquery对象放入正常的JS对象中,结果失去了jQuery的功能?

感谢,

回答

3

使用.eq()

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

jQuery的数组包含潜在的DOM元素在每个索引处,所以当你访问他们的DOM功能都可用,但不是jQuery方法。

1
$(".dataTables_wrapper")[i] 

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

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

,或者使用n个子或类似