我想了解为什么有些东西在jQuery中起作用。 当我想申请一个jQuery的扩展名,例如datatables,我运行命令:为什么在jQuery中工作?
$("#some_id").datatables(.. parameters ..);
我不知道为什么这个作品,明显的DOM元素没有一个方法datatables()
提前。
谢谢!
我想了解为什么有些东西在jQuery中起作用。 当我想申请一个jQuery的扩展名,例如datatables,我运行命令:为什么在jQuery中工作?
$("#some_id").datatables(.. parameters ..);
我不知道为什么这个作品,明显的DOM元素没有一个方法datatables()
提前。
谢谢!
原因是因为您没有在DOM元素上进行此调用 - 您正在对jQuery对象进行调用,该对象将信息存储在它应该影响的DOM对象上。
其原因.datatables()
可用的是,一些插件(可能DataTables)使其在类似这样的方式访问:
jQuery.fn.my_foo_func = function(){
console.log(jQuery(this));
};
如果应用上面,你就可以做这样的事情:
$("#some_id").my_foo_func();
它将传递给控制台您调用它的jQuery对象。
是否足够清楚?
$("#some_id")
不返回HTML DOM元素,它返回包装它的JQuery对象。
这个JQuery对象确实有datatables方法。
一旦你调用$("#some_id")
你不再有一个DOM对象,而是一个jQuery对象。 DOM对象可用$("#some_id")[0]
到达。
您安装了一个向jQuery() object(通常缩写为$())添加方法.datatables()的插件。如果你有兴趣创建你自己的jQuery()对象方法,here's a Google search to get you started。
你可能在你的代码中包含了dataTable插件... :) – Vivek
你应该做一些阅读:[类型:jQuery](http://api.jquery.com/Types/#jQuery) –