如果JQuery找不到某个元素可以吗?

时间:2015-05-21 01:17:02

标签: javascript jquery datatables

我正在使用JQuery DataTables以便在我的Web应用程序中拥有漂亮的表,但是在包含表格的所有不同文件中进行更改和部署变得非常麻烦。

$(function(){
     $("#exampleTable").dataTable({
         "stateSave": true,
         "stateDuration": -1
     });
 })

我想到了简单地在所有具有DataTable的文档中包含相同的JavaScript文件,该DataTable从一个地方初始化所有不同的表。

显然,在页面之间,大多数元素实际上不会存在于该页面上,因此JQuery将无法找到它们。

我的问题是:这没关系吗?有什么后果吗?我认为这是理想的解决方案,但我想确保不会出现任何问题。理解!

修改

我想我可以只给每个我想要DataTable的表一个类,并在JavaScript文件中对整个类进行声明,因此会有更少/没有未完成的对象。但问题仍然存在。我希望在它如何影响性能方面有一个相当有信誉的答案。

2 个答案:

答案 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的元素,那么这很糟糕。此外,如果这种做法变得猖獗,并且您在所有页面上都会触发大量不相关的命令,那么它将开始减慢您的网站速度。