어떻게 textpattern으로 모든 텍스트 노드를 선택할 수 있습니까?jquery로 텍스트 노드를 찾는 방법
예 :
<html>
<body>
<div>test</div>
<button>test</button>
<span title="test"></test>
</body>
</html>
$(select all nodes with text "test")
어떻게 textpattern으로 모든 텍스트 노드를 선택할 수 있습니까?jquery로 텍스트 노드를 찾는 방법
예 :
<html>
<body>
<div>test</div>
<button>test</button>
<span title="test"></test>
</body>
</html>
$(select all nodes with text "test")
하지만 그는 텍스트 노드를 선택하지 않을 것입니다. 이것은 그가 분명히 요구하고있는 것입니다. –
하면 클래스 이름에 '시험'에 대해 이야기하는 경우 :
var elements = $('[class]*="test"');
아니면 요소의 텍스트에 '시험'에 대해 이야기하는 경우 : 이전
var elements = %('*:contains("test")');
contains() Selector을 사용하고 싶습니다.
# 그들의 내용에 기초하여 요소를 선택하기위한 표준 필터 1
하나가되는 방법은 : (텍스트) 필터를 포함한다. 주어진 텍스트가 포함 된 모든 요소와 일치합니다. 주요한 결함은 으로 대소 문자를 구분한다는 것입니다. 개인적으로 대부분의 경우 텍스트 비교 인 은 대소 문자를 구분하지 않아도됩니다. 일반적으로 최종 사용자가 대/소문자를 구분하지 않고 입력 한 텍스트를 찾는 것이 더 직관적입니다. 꽤 약간의 사람들이 인터넷에 나와 동의합니다. 대소 문자를 구별하지 않는 버전의 : 은 인터넷에 나타난 필터 을 포함합니다. 대체 버전의 예는 다음과 같습니다 선택한 텍스트와 당신이 대소 문자를 구분하지 검색을 시뮬레이션 할 수 있습니다 일치하기 전에 대문자로에 대한 을 찾고있는 텍스트를 모두 변환하여
jQuery.extend( jQuery.expr[':'], { Contains: "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" } );
. 위의 정의에서 대소 문자를 구분하는 버전과 대/소문자를 구분하지 않는 버전을 사용하는 것의 유일한 차이는 의 대문자 C입니다. 물론 이 코드를 사용하여 작업하는 다른 사람들에게 의미가있는 내용으로 바꿀 수 있습니다. # 당신은 자바 스크립트에 나타났습니다 수 있듯이 2
위의 스 니펫 방법은, (가) 필터를 포함
는 주어진 문자열 는 특정 부분 포함되어 있는지 여부를 확인하는 문자열 같이 IndexOf 메서드를 사용하여 텍스트의 또는 아닙니다. 대부분의 상황에서이 방법이 이면 충분하지만 간단한 일치가 충분하지 않은 경우 시나리오가 발생할 수 있습니다.정규 표현식을 사용하면 찾고있는 대답이 일 수 있습니다.
jQuery는 정규식에 대한 지원을 제공하지 않습니다. 나는 그들이 모든 것에 대한 대답이 이 아니므로 당신이 현명하게 그것을 사용해야한다는 것에 분명히 동의 할 것입니다. 그러나 에서 사용하려면 적절한 이유가 있습니다. 다행히도 jQuery를 정규식 익스프레션 기반 컨텐츠 필터로 확장하는 것은 그리 어렵지 않습니다.
jQuery.extend( jQuery.expr[':'], { regex: function(a, i, m, r) { var r = new RegExp(m[3], 'i'); return r.test(jQuery(a).text()); } } );
믿거 나 말거나지만, 몇 줄의 코드는 위의 당신이 에 필요한 모든 정규 표현식 텍스트가 일치에 대한 지원과 jQuery를 확장하는 것입니다. 무엇이 위의 regex라는 새로운 필터를 정의하는 것입니다. 필터를 호출 할 때마다 필터의 매개 변수로 전달 된 값 을 사용하여 새 정규식을 만듭니다. 또한 표현식 은 대소 문자를 구분하지 않는 일치 항목을 사용합니다 (RegExp 생성자의 두 번째 매개 변수에서 을 삭제하여 제거 할 수 있음). 현재 DOM 개체의 텍스트가 표현식과 일치하면 개체는 에 추가됩니다. 다음과 같이
당신은 정규식 필터를 사용할 수 있습니다 :
$("p:regex('[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}')")
위의 예제는 전자 메일을 주소를 포함하는 모든 단락을 반환합니다. (저자 말했듯
jQuery ships with quite a few filters: http://api.jquery.com/category/selectors/
)
이러한 두 가지 방법은
:contains
및 :regex
필터 jQuery를 연장한다. 원하는 경우 또한 :regex
필터 plugin 있습니다.
"텍스트 패턴 사용"이란 "특정 텍스트 포함"을 의미합니까? –
실제로 텍스트 노드가 필요합니까? 또는 텍스트 노드를 포함하는 요소를 원합니까? '