我试图理解为什么某些东西在jQuery中的运作方式。 当我想应用jQuery扩展时,例如datatables,我运行命令:
$("#some_id").datatables(.. parameters ..);
我不知道为什么会这样,显然DOM元素事先没有方法datatables()
。
谢谢!
答案 0 :(得分:5)
$("#some_id")
不返回HTML DOM元素,它返回一个包装它的JQuery对象。
这个JQuery对象确实有datatables方法。
答案 1 :(得分:4)
原因是你没有对DOM元素进行调用 - 你是在 jQuery对象上创建的,它将信息存储在它应该影响的DOM对象上。
.datatables()
可用的原因是某个插件(可能DataTables)可以通过与此类似的方式访问它:
jQuery.fn.my_foo_func = function(){
console.log(jQuery(this));
};
如果您应用上述内容,您将可以执行以下操作:
$("#some_id").my_foo_func();
将调用您调用它的jQuery对象传递给控制台。
是否足够清楚?
答案 2 :(得分:0)
一旦你调用$("#some_id")
,你就不再拥有一个DOM对象而是一个jQuery对象。
可以使用$("#some_id")[0]
访问DOM对象。
答案 3 :(得分:0)
您安装了一个插件,该方法将一个方法.datatables()添加到jQuery() object,通常缩写为$()。如果您对创建自己的jQuery()对象方法感兴趣,here's a Google search to get you started。