“选择”是什么意思? $ .fn怎么样?

时间:2015-01-20 00:10:32

标签: jquery

jQuery Learning Center中:

  
      
  • 调用jQuery选择的方法位于$.fn命名空间中,并自动接收并返回选择this
  •   
  • $命名空间中的方法通常是实用程序类型的方法,不适用于选择;他们不会自动通过任何   参数,它们的返回值会有所不同。
  •   

我不确定"选择"而$fn在这里意味着什么。是"选择"是指使用Sizzle选择的DOM元素? $fn是一个对象(因为JavaScript / ECMAScript没有对命名空间的内置支持),这个对象的方法类似于$.fn.add()吗?

我搜索了" jQuery选择"在网上,但没有得到任何看起来很有希望的东西。谁能指出我正确的方向?非常感谢例子(和解释)。

2 个答案:

答案 0 :(得分:2)

jQuery选择只是对jQuery方法本身(或$ alias)的调用。这就像$("#myDiv")。在这种情况下,$("#myDiv")是一个选择。此方法的结果是一个jQuery对象,其中包含匹配您选择的所有DOM元素。您传递给$的字符串是选择器。 jQuery支持CSS选择器(例如:#myDiv,.myDiv或div),XPath选择器(例如$('/ html /.// div [@ id =“text”]')))等。看看Selectors

$.fn是可供选择的函数的“容器”。假设您有一个名为autocomplete的插件。如果您在autocomplete中定义$.fn,则autocomplete会自动在任何选择中使用。这意味着您可以致电$("#myDiv").autocomplete()。在autocomplete实现中,您可以访问匹配的DOM元素并将插件应用于它们。您可以看到如何实现一个简单的插件here

答案 1 :(得分:0)

jQuery选择器实际上是CSS选择器。因此,例如,$('#some_HTML_element_id')将此元素作为jQuery对象返回。

什么是jQuery对象? - 类似HTML的对象,它具有正常的Javascript属性,与 - document.getElementBy*()相同,但具有与jQuery相关的更多功能。例如:

jQuery('any selector').next() // selecting the next sibling element.

// there is no .next() function.
document.getElementBy*('any selector').next 

这是选择。您只需选择一个元素,jQuery就可以添加更多功能。它返回this元素,因此您可以使用链接。例如:

$('.tab').eq(0).next().select()

$('.tab') - >返回jQuery对象集,因为您选择了.tab css类,在大多数情况下,您将拥有多个选项卡。

jQuerySetOfElements.eq(0) - >从集合中返回第一个元素。 (在这种情况下,第一个选项卡为jQuery对象)。

jQueryFirstTab.next() - >选择下一个兄弟元素作为jQuery对象。

...

  • $ namespace中的方法通常是实用程序类型的方法,不适用于选择;它们不会自动传递任何参数,它们的返回值也会有所不同。

这意味着实用程序类型的函数,它不基于选择器。例如,我们有$.each()。我们知道Javascript没有foreach循环。所以jQuery为我们提供了这个功能。请参阅语法:

$('selection') - >返回jQuery元素。

$.UtilityFunction() - >为我们做一些工作。

  • 调用jQuery选择的方法位于$ .fn命名空间中,并且 自动接收并返回选择。

这意味着带有选择器的所选元素具有$.fn命名空间中的函数,例如:在$.fn命名空间中,我们拥有帮助我们处理以下元素的所有函数: .hide().show().toggle()。当我们选择带有选择的元素时,我们可以在所选元素上使用此函数,例如:$('#myDiv').hide()

$。fn是jQuery.protopype。请参阅:jQuery fn namespace