我正在使用JQuery DataTables以便在我的Web应用程序中拥有漂亮的表,但是在包含表格的所有不同文件中进行更改和部署变得非常麻烦。
$(function(){
$("#exampleTable").dataTable({
"stateSave": true,
"stateDuration": -1
});
})
我想到了简单地在所有具有DataTable的文档中包含相同的JavaScript文件,该DataTable从一个地方初始化所有不同的表。
显然,在页面之间,大多数元素实际上不会存在于该页面上,因此JQuery将无法找到它们。
我的问题是:这没关系吗?有什么后果吗?我认为这是理想的解决方案,但我想确保不会出现任何问题。理解!
修改
我想我可以只给每个我想要DataTable的表一个类,并在JavaScript文件中对整个类进行声明,因此会有更少/没有未完成的对象。但问题仍然存在。我希望在它如何影响性能方面有一个相当有信誉的答案。
答案 0 :(得分:0)
如果您尝试在不存在的元素上运行数据表,那很好,大多数jQuery插件通过迭代当前jQuery集合中的每个元素并应用某些操作来工作。如果集合为空,它将返回。它不会产生任何性能影响(除了DataTables仅在实际应用于表时才添加)。
编辑:我查看了源代码,他们确实将一组方法应用于this
,然后再运行this.each
,将实际的dataTables功能应用于采集。这仍然不应影响性能,因为他们没有调用任何方法:https://github.com/DataTables/DataTables/blob/master/media/js/jquery.dataTables.js#L5333-L6108
答案 1 :(得分:0)
在功能方面,这不会导致任何问题。 jQuery选择器将搜索,找不到任何内容(希望如此),然后在任何内容上执行命令。
如果您无法确定其他人未能在其他网页上创建具有此ID的元素,那么这很糟糕。此外,如果这种做法变得猖獗,并且您在所有页面上都会触发大量不相关的命令,那么它将开始减慢您的网站速度。