有没有一种方法可以使用jQuery来判断整个网页是否包含一些文本?例如,在StackOverflow上,通过在控制台中使用以下命令,我可以返回任何包含单词"Badges“的div:
$("div:contains('Badges')")然而,当我写下:
$(document:contains('Badges'))或
$("document:contains('Badges')")我得到一个错误。如何检查页面上的任何元素是否包含某些文本并返回这些元素?
发布于 2015-09-12 04:27:02
尝试:
$("html:contains('Badges')")您还可以使用:
$("body:contains('Badges')")发布于 2015-09-12 04:44:21
$("*").filter(function() { return $(this).text() ==="Badges";});
这个函数还会检查内部的子对象的内容。
编辑:更改为只返回具有确切内容的元素作为“徽章”。
发布于 2015-09-12 18:38:40
要只选择包含文本的最深节点,请使用如下所示的内容
var textToFind = 'Badges';
$(function(){
var allTextNodes = $("*").contents().filter(function () {
return this.nodeType === Node.TEXT_NODE;
});
var matchingNodes = allTextNodes.filter(function(){return this.textContent.indexOf(textToFind) > -1;}).parent();
// matchingNodes is a list of all nodes (tags) that contain the searched text
});或以插件形式
$(function(){
$.fn.nodesWithText = function(textToFind){
var allTextNodes = $("*", this)
.addBack()
.contents()
.filter(function () {
return this.nodeType === Node.TEXT_NODE;
}),
matchingNodes = allTextNodes
.filter(function(){
return this
.textContent
.indexOf(textToFind) > -1;
});
return matchingNodes.parent();
};
});您可以将它用作$(document).nodesWithText('Badges');,它将搜索整个文档中具有指定文本的任何元素,或者$('div').nodesWithText('Badges');将在div元素中搜索包含指定文本的任何其他节点。(第二个use方法不会返回div元素,但会在div元素中搜索包含文本的任何类型的标记)
http://codepen.io/gpetrioli/pen/XmmOmb上的演示
(插件可以简化为在检查节点类型的同时进行文本匹配。我分两次完成,以便更清楚地了解所需的实际步骤)
https://stackoverflow.com/questions/32531587
复制相似问题