【问题标题】:jQuery find $.find('selector') versus $('selector') differencejQuery 找到 $.find('selector') 与 $('selector') 的区别
【发布时间】:2011-08-30 07:17:21
【问题描述】:

我有一个问题,为什么这两个代码 sn-ps 不同。

$('#ctl00_DDMenu1_HyperLink1')  
//jQuery(a#ctl00_DDMenu1_HyperLink1 Default.aspx) Console output
$('#ctl00_DDMenu1_HyperLink1').text()

上面的代码返回:Some link text

但是

$.find('#ctl00_DDMenu1_HyperLink1')  
//[a#ctl00_DDMenu1_HyperLink1 Default.aspx] Consolee output
$.find('#ctl00_DDMenu1_HyperLink1').text()

返回

TypeError: $.find("#ctl00_DDMenu1_HyperLink1").text 不是函数

这是否意味着$.find返回Array对象[]而jQuery函数不可访问?

//编辑

我使用过 jQuery 1.4.2 和 Firebug 控制台。

//通过实践找到答案

此代码将返回 jQuery 对象引用,并且所有 jQuery 函数都可以访问。

$('any_selector')
//jQuery(item1),jQuery(item2),...,jQuery(item-N) Console output $('any_selector').text()

此代码返回 JavaScript 数组对象,因此 jQuery 的任何函数都不能应用于结果集。即使结果集似乎相同。

$.find('any_selector')
//[item1,item2,...,item-N] Consolee output
$.find('any_selector').text()

但是我们可以做一些技巧(奇怪的技巧)将 js 数组包装到 jQuery 选择器中:

$($.find('any_selector_as_inner_select')).val()

//感谢大家的帮助!

【问题讨论】:

  • 您不应该使用 .find() 来查找具有特定 id 属性的元素。每个元素的 ID 应该是唯一的。如果你想检查某个后缀或前缀,那么你可以这样做。
  • 这只是函数工作方式不同的一个例子。无论如何感谢您的帮助:)

标签: jquery find css-selectors


【解决方案1】:

这不起作用的原因是因为find() 允许您根据您已经做出的选择过滤一组元素。例如,如果您想选择特定表单中的所有输入,您可以写:

$('#aParticularForm').find('input') 

它不能单独调用。

【讨论】:

  • 我认为它可以单独调用但看起来很奇怪:$($.find('#aParticularForm input)).val()
  • @r.piesnikowski 哦,有趣,我不知道!感谢您的提醒。
  • $.find() 函数返回匹配对象的 JavaScript 数组,因此任何 jQuery 函数都不能在纯 JS 对象中访问。但是将这些 JS 对象包装在 $() 中会影响良好的结果。干杯!
  • 有趣的是$($.find('#foo')).text()$('#something').find('#foo').text() 都可以工作,但$.find('#foo').text() 不行。
猜你喜欢
  • 2017-06-09
  • 2011-09-23
  • 1970-01-01
  • 2016-02-21
  • 2016-02-18
  • 2017-06-23
  • 2011-09-30
  • 1970-01-01
  • 2018-02-14
相关资源
最近更新 更多