웹 페이지에 찾고자 하는 문자열이 <나는 간단한 문자열입니다>와 같은 문자열이 있다고 가정해 보겠습니다. JQuery를 사용하면 어떻게 할 수 있을까요?
jQuery에는 contain 메서드가 있습니다. 다음은 스니펫입니다:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
위의 선택기는 대상 문자열을 포함하는 모든 요소를 선택합니다. 결과는 일치하는 요소를 포함하는 jQuery 객체가 됩니다. API 정보는 다음을 참조하세요: https://api.jquery.com/contains-selector/
와일드카드를 사용할 때 한 가지 주의해야 할 점은 원하지 않을 수 있는 HTML 본문 요소를 포함한 모든 요소를 가져온다는 것입니다. 그렇기 때문에 jQuery와 다른 곳에서 대부분의 예제에서 $('div:contains('나는 단순한 문자열입니다')')를 사용합니다.
일반적으로 jQuery 선택기는 DOM의 "텍스트 노드" 내에서 검색하지 않습니다. 그러나 .contents() 함수를 사용하면 텍스트 노드가 포함되므로 nodeType 프로퍼티를 사용하여 텍스트 노드만 필터링하고 nodeValue 프로퍼티를 사용하여 텍스트 문자열을 검색할 수 있습니다.
('*', 'body') .andSelf() .contents() .filter(function(){ return this.nodeType === 3; }) .filter(function(){ // 텍스트 어디든 '단순 문자열'이 포함된 경우에만 일치합니다. return this.nodeValue.indexOf('simple string') != -1; }) .each(function(){ // 이 노드 값으로 무언가를 수행합니다. });
이 간단한 string", 리프, 나는 그냥 포함된 요소에 " 선정할 예정이다.
$('*:contains("I am a simple string")').each(function(){
if($(this).children().length < 1)
$(this).css("border","solid 2px red") });
주소 표시줄에는 붙여넣습니다 정보정의다음 꽂으십시오 테스트하려면 거잖나.
javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false;
나는 그냥 스케쳐내 _" 잡기 위한 간단한 string" _입니다.;; 먼저 텍스트를 랩 같은 요소에 있습니다.
$('*:contains("I am a simple string")').each(function(){
if($(this).children().length < 1)
$(this).html(
$(this).text().replace(
/"I am a simple string"/
,'<span containsStringImLookingFor="true">"I am a simple string"</span>'
)
)
});
및 재동기화할 이.
$('*[containsStringImLookingFor]').css("border","solid 2px red");
그냥 경우 가장 가까운 노드입니다 텍스트 검색, re you& # 39 이 사용할 수 있습니다.
$('*:contains("my text"):last');
이 경우 이시목이를 작동합니까 HTML 다음과 같습니다.
<p> blah blah <strong>my <em>text</em></strong></p>
이 때문에 ',' 태그를 사용하여, 위의 선택기를 발견하리니 < strong> that& # 39 에 포함되어 있는 마지막 태그번호 그 전체 구체화하십시오.
이 함수는 작동합니까. 기본적으로 수행합니까 재귀 조회 인도되니 우리 확실한 목록니다 리프 노드입니다.
function distinctNodes(search, element) {
var d, e, ef;
e = [];
ef = [];
if (element) {
d = $(":contains(\""+ search + "\"):not(script)", element);
}
else {
d = $(":contains(\""+ search + "\"):not(script)");
}
if (d.length == 1) {
e.push(d[0]);
}
else {
d.each(function () {
var i, r = distinctNodes(search, this);
if (r.length === 0) {
e.push(this);
}
else {
for (i = 0; i < r.length; ++i) {
e.push(r[i]);
}
}
});
}
$.each(e, function () {
for (var i = 0; i < ef.length; ++i) {
if (this === ef[i]) return;
}
ef.push(this);
});
return ef;
}