programing

jQuery : 여러 문자열을 검색하기 위한 선택기를 포함합니다.

css3 2023. 10. 7. 12:08

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()

감사합니다!

정답.

찾기 위해서.li메리와 존 모두를 포함하는 텍스트를 가지고 있는 것입니다.

$('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')").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"),li:contains("Mary")')

간단합니다.

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

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