jQuery 查找 $.find('selector') 与 $('selector') 区别

发布于 2024-11-08 17:21:30 字数 1276 浏览 0 评论 0原文

我有一个问题为什么这两个代码片段不同。

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

上面的代码返回: Some link text

But

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

Returns

类型错误:$.find("#ctl00_DDMenu1_HyperLink1").text 不是函数

这是否意味着 $.find 返回 Array 对象 [] 和 jQuery 函数无法访问?

//编辑

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

//通过实践找到的答案

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

$('any_selector')
//jQuery(item1),jQuery(item2),...,jQuery(item-N) 控制台输出 $('any_selector').text()

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

$.find('any_selector')
//[item1,item2,...,item-N] 控制台输出
$.find('any_selector').text()

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

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

//谢谢大家的帮助!

I've got a question why these two code snippets are different.

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

The code above returns : Some link text

But

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

Returns

TypeError: $.find("#ctl00_DDMenu1_HyperLink1").text is not a function

Does this mean that $.find return Array object [] and jQuery functions are not accessible?

//EDIT

I've used jQuery 1.4.2 & used Firebug Console.

//Answer found by practise

This code will return jQuery object reference and all jQuery function are accessible.

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

This code return JavaScript Array object so any function of jQuery cannot be applied to resultset. Even when resultset seems to be identical.

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

But we can do trick (weird trick) to wrapp js Array into jQuery selector:

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

//Thanks for help guys!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懒的傷心 2024-11-15 17:21:30

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

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

它不能被单独调用。

The reason this does not work is because find() lets you filter on a set of elements based on a selection you've already made.For example if you wanted to select all of the inputs within a particular form, you could write:

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

It cannot be called on its own.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文