jQuery 查找 $.find('selector') 与 $('selector') 区别
我有一个问题为什么这两个代码片段不同。
$('#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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这不起作用的原因是
find()
允许您根据已经做出的选择过滤一组元素。例如,如果您想选择特定范围内的所有输入形式,你可以写:它不能被单独调用。
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:It cannot be called on its own.