Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery.find()忽略根节点

jQuery.find()忽略根节点
EN

Stack Overflow用户
提问于 2010-09-03 07:34:19
回答 3查看 4K关注 0票数 11

我的jQuery对象如下所示:

代码语言:javascript
运行
AI代码解释
复制
var myJq = jQuery("<div class='a'></div><div class='b'></div>")

myJq.find(".a")返回一个空的jQuery对象,显然是因为find()只搜索包含在jQuery对象中的节点的子节点,而不是节点本身。

如何使用选择器获取myJq中的一个div?

EN

回答 3

Stack Overflow用户

发布于 2010-09-03 07:35:45

您需要使用.filter()代替。

这将在jQuery对象的顶层筛选项。

代码语言:javascript
运行
AI代码解释
复制
myJq.filter(".a")
票数 18
EN

Stack Overflow用户

发布于 2011-03-16 14:00:00

下面是一个.find2(),它可以同时找到根元素和子元素:

代码语言:javascript
运行
AI代码解释
复制
$.fn.find2 = function(selector) {
  return this.filter(selector).add(this.find(selector));
};

有了这个,你就可以做到:

代码语言:javascript
运行
AI代码解释
复制
var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs

下面是关于它的更多信息:http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/

票数 8
EN

Stack Overflow用户

发布于 2010-09-03 07:46:18

您可以使用.filter()

代码语言:javascript
运行
AI代码解释
复制
var div = myJq.filter('.a');

或者(更好,更快)使用.first()

代码语言:javascript
运行
AI代码解释
复制
var div = myJq.first('.a');

基准

代码语言:javascript
运行
AI代码解释
复制
var myJq = jQuery("<div class='a'></div><div class='b'></div>")
var loop = 20000; 

console.time('filter');  
while(loop--){
    var blah = myJq.filter(".a");
}
console.timeEnd('filter');

loop = 20000;

console.time('first');  
while(loop--){
    var blah = myJq.first(".a");
}
console.timeEnd('first');

.first()对我来说快了大约8倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3637298

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档