为什么这在jQuery中有效?

时间:2011-11-17 09:24:35

标签: javascript jquery dom

我试图理解为什么某些东西在jQuery中的运作方式。 当我想应用jQuery扩展时,例如datatables,我运行命令:

$("#some_id").datatables(.. parameters ..);

我不知道为什么会这样,显然DOM元素事先没有方法datatables()

谢谢!

4 个答案:

答案 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