我正在尝试使用:contains来查找div中的文本位,并且它工作正常,除非它遇到包含“& nbsp”或“'”的文档。
奇怪的是,我可以使用:甚至包含“& amp”的文本,但不包含其他情况。
这是我的尝试,也是https://jsfiddle.net/sesyj5kd/
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="well">
<div id="dText" style="background: white; height: 90%; overflow-y:auto;" ></div>
</div>
</div>
</div>
</div>
脚本:
var str1 = "<html><head></head><body><p>This is the doc's first sentence</p><div>not the first sentence, but it's in a div & all </div> </body></html>";
$("#dText").html( str1 );
console.log( $("#dText").html() );
console.log( $("*:contains('the doc's first')") );
console.log( $("*:contains('in a div & all')") );
第二个:包含查找指定的文本,但第一个没有,即使我搜索“doc \”s;是否有必要/可能转义像&amp; nbsp或类似的东西?
主要问题我面临的是div.html(htmlString)正确显示内容,但是看一下console.log(div.html())我可以看到很多&amp; ; nbsp(尽管这些不在HTML字符串中)阻止:当目标文本在单词之间有单词时,包含对任何多字查询的正常工作。
答案 0 :(得分:1)
您需要更改一行:
console.log( $("*:contains('the doc's first')") );
为:
console.log('Second Log: ' + $("*:contains(\"the doc's first\")").length );
^^ ^^
var str1 = "<html><head></head><body><p>This is the doc's first sentence</p><div>not the first sentence, but it's in a div & all </div> </body></html>";
$("#dText").html(str1);
console.log('First Log: ' + $("#dText").html());
console.log('Second Log: ' + $("*:contains(\"the doc's first\")").length);
console.log('Third Log: ' + $("*:contains('in a div & all')").length);
&#13;
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="well">
<div id="dText" style="background: white; height: 90%; overflow-y:auto;"></div>
</div>
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
首先,您要控制日志记录一组元素,这些元素会占用搜索到的字符串。您应该定位有关它的信息......就像它的class
。
我在你注入的字符串中添加了类。
然后,就像说,它是一个集合。像你这样简单的console.log()
会输出第一个找到的元素......可能是body
或html
。你必须定位最后找到的元素,&#34;最接近&#34;一个来自搜索过的字符串。
最后,你必须在搜索字符串中转义引号。
这是Fiddle ...查看控制台。
var str1 = "<p class='myP'>This is the doc's first sentence</p><div class='myDiv'>not the first sentence, but it's in a div & all </div>";
$("#dText").html( str1 );
console.log("String: "+ $("#dText").html() );
var test1 = $("*:contains('the doc\\'s first')");
var test2 = $("*:contains('in a div & all')");
// Get the last element found containing the string.
console.log("1: "+test1.last().attr("class"));
console.log("2: "+test2.last().attr("class"));