我有一个网页,其中有一堆用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功能吗?
谢谢,
答案 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个孩子或类似的