ProgramingTip

jQuery : 복수를 검색하는 선택을 포함합니다.

bestdevel 2020. 11. 27. 21:04
반응형

jQuery : 복수를 검색하는 선택을 포함합니다.


내가 가지고 가지고 가정하면 :

<li id="1">Mary</li>
<li id="2">John, Mary, Dave</li>
<li id="3">John, Dave, Mary</li>
<li id="4">John</li>

"John"과 "Mary"를 포함하는 모든 <li> 요소를 찾아야한다면 jQuery를 생성 할 수 있습니까?

단일 링크 검색은 검색.

$('li:contains("John")').text()

다음 의사 코드와 같은 것을 찾고 있습니다.

$('li:contains("John")' && 'li:contains("Mary")').text()

감사합니다!


대답

liMary John이 모두 포함 된 텍스트 를 만나면 다음을 수행하십시오.

$('li:contains("Mary"):contains("John")')

liMary 또는 John이 포함 된 텍스트가있는의 수행하십시오.

$('li:contains("Mary"), li:contains("John")')

설명

다음

:contains과 같이 클래스 선언 인 것처럼 생각하십시오 .class.

$('li.one.two').      // Find <li>'s with classes of BOTH one AND two
$('li.one, li.two').  // Find <li>'s with a class of EITHER one OR two

다음과 동일합니다 :contains.

$('li:contains("Mary"):contains("John")').      // Both Mary AND John
$('li:contains("Mary"), li:contains("John")').  // Either Mary OR John

도장

http://jsbin.com/ejuzi/edit


어때

$('li:contains("John"),li:contains("Mary")')

대답

올바른 구문은 다음과 가변합니다. $("li:contains('John'),li:contains('Mary')").css("color","red")

하지만 jQuery가 매우 나쁘게 수행하는 테스트는 알았습니다 (IE6에서는 오래 사용 중입니다). 그래서 저는 저만의 속성 필터를 작성하기로 결정했습니다.

사용 방법은 다음과 가변합니다. $("li:mcontains('John','Mary')").css("color","red")

암호

jQuery.expr[':'].mcontains = function(obj, index, meta, stack){
    result = false;     
    theList = meta[3].split("','");

    var contents = (obj.textContent || obj.innerText || jQuery(obj).text() || '')

    for (x=0;x<theList.length;x++) {
        if (contents.indexOf(theList[x]) >= 0) {
            return true;
        }
    }

    return false;
};

간단합니다 :

$("li:contains('John'):contains('Mary')")

참고 URL : https://stackoverflow.com/questions/2416803/jquery-contains-selector-to-search-for-multiple-strings

반응형