2013-02-12 26 views
0

我正在使用在http://datatables.net/api找到的Jquery数据表插件。该插件生成它自己的搜索框,如果启用,它会在初始化时插入页面。当创建一个搜索框,它嵌套在它自己的DIV像这样:是否可以自定义Jquery Data Table默认生成的dom结构?

<div> 
    <!-- search code --> 
</div> 
<table> 
    <!-- table data --> 
</table> 

我想对表的滚动条,而无需移动搜索框,所以它总是可见。溢出-Y:滚动;似乎不适用于我的表格元素,但在div上工作。是对的吗?如果我将样式应用于父容器,那么如果用户向下滚动,搜索框将不可见。我试着自己身体移动元素所需的设定是:

<div> 
    <!-- Search Code --> 
</div> 
<div style="overflow-y:scroll;"> <!-- actually in a class but this shows what it is. --> 
    <table> 
     <!-- table data --> 
    </table> 
</div> 

正如所预料的,打破了插件生成的搜索框。所以我的问题是,我可以使用插件的内置搜索功能实现期望的结果,也许使用像'sdom'这样的参数,或者我需要咬住子弹并滚动我自己的搜索/过滤器功能?

+0

这可能听起来很傻,但为什么不干脆用分页元素到数据表,结果限制为10或20个页面,然后就没有必要滚动,这将消除这个问题。 – SQLGuru 2013-02-12 12:22:40

+0

我的客户已经特别要求滚动分页,我已经和他们讨论过了。我的偏好是寻呼,但不是我的偏好。你提出了一个非常有效的观点,但不幸的是,在这种情况下我不能使用这一点。 – Nickel 2013-02-12 13:33:51

+0

你有没有试过在JQuery Datatables论坛发布这个问题? – SQLGuru 2013-02-13 06:11:59

回答

0

我发现的解决方案只是关闭内置过滤器,并编写我自己的等价物,以便放置在我喜欢的地方。

http://jsfiddle.net/KwXby/5/

$(document).ready(function(){ 
    $("#tableFilter").bind("change keyup", function(){ 
    var tableRows = $('.dataTable:visible').find('tbody').find('tr'); 
    var filterText = $(this).val(); 
    $(tableRows).each(function() { 
    if ($(this).text().indexOf(filterText) >= 0) { 
     $(this).show(); 
    } else { 
     $(this).hide(); 
    } 
    }); 
    }); 
}); 

编辑: 后来我才发现,我需要能够搜索到多个列与空格分隔搜索词,并提供一个空表行,如果没有被发现,其必要的更新。

http://jsfiddle.net/KwXby/11/

相关问题