使用jQuery时如何在搜索空间中包含上下文元素(selector [,context])

我有一个现有的元素集合,如果它们匹配给定的选择器我想要更改.我想对这些项目的后代(递归)做同样的事情.这看起来像jQuery(selector [,context])的功能.但是,结果集不包括父元素.我也想查询它们.这可以用一个命令完成吗?

例如,

var els = $('<div foo="bar">')
$("[foo]",els ); // finds nothing
els.filter("[foo]"); // finds div

但是过滤器不会搜索后代,所以

var els = $('<div foo="bar"><span foo="foobar"></div>')
$("[foo]",els ); // finds span
els.filter("[foo]"); // finds div

找到跨度和div的最佳方法是什么?使用这两个命令?是否有单行命令可以找到它们?还是比这更好吗?

var els = $('<div foo="bar"><span foo="foobar"></div>')
var selection = $("[foo]",els ); // finds inner elements
selection = selection.add(els.filter("[foo]")); // then adds on parents that match the selector

解决方法

上下文用于提供要在其中查看的元素或元素集合,这意味着这些元素的后代.它不像.filter那样过滤,它更像是.find.

如果你想要两者,你将不得不同时使用:

$("[foo]",els ).add( els.filter("[foo]") );

或使用父元素.

$("[foo]",$("<div>").html(els) );

所以,没有更好的方法.

第二种方法是jQuery的.load方法如何做到这一点,但我不会认为它更好.

https://github.com/jquery/jquery/blob/1.9-stable/src/ajax.js#L176

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...