微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐