2012-01-09 2 views
8

jQuery contain을 사용하여 div의 내용에 입력 된 문자열을 비교하려고합니다.contains 및 toLowerCase()의 jQuery 사용법

문제는 대문자/소문자에 관계없이 문자열이 포함되어 있는지 확인하고 싶습니다. .dDimension div를 중 하나가 '날짜'를 포함하고 사용자가 'D'키를 누를 경우

$(document).ready(function() { 
    drawDimensions('dContent'); 
    $('#dSuggest').keyup(function() { 
     var dInput = this.value; 
     $(".dDimension:contains('" + dInput + "')").css("display","block"); 
    }); 
}); 

그래서, 나는 그 항목을 표시하려면 :

이 제 기능입니다.

가능합니까?

+1

가능한 중복 경우이 문자를 구분하지 jQuery를 거기에

$.extend($.expr[':'], { 'containsi': function (elem, i, match, array) { return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || '').toLowerCase()) >= 0; } }); 
:
$.expr[':'].icontains = function(obj, index, meta, stack){ return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0; }; // Example usage. $("div:icontains('John')").css("text-decoration", "underline"); 

답변

18

당신은 .filter[docs]를 사용할 수 있습니다

var dInput = this.value.toLowerCase(); 

$(".dDimension").filter(function() { 
    return $(this).text().toLowerCase().indexOf(dInput) > -1; 
}).css("display","block"); 
+0

"not"함수를 사용하여 반대를 확인할 수 있습니까? –

+0

예. 아니면'> -1'을'=== -1'로 바꿉니다. –

+0

고마워요! 완벽하게 작동합니다. –

1

을 당신은 jQuery를 확장하여 자신의 선택을 쓸 수 있습니다. the jQuery documentation for contains의 마지막 코멘트를 맞게 수있는 'icontains'구현을 제공이

$.extend($.expr[':'], { 
    'containsi': function(elem, i, match, array) 
    { 
    return (elem.textContent || elem.innerText || '').toLowerCase() 
    .indexOf((match[3] || "").toLowerCase()) >= 0; 
    } 
}); 

Useage $(".dDimension:containsi('" + dInput + "')").css("display","block");

0

을보십시오.

는 [의
1

this example에서보세요, 그는 containsi,이 같은 호출하는 경우를 구분에 포함 된 선택으로의 jQuery 셀렉터를 확장 : selector?] (http://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector)
+0

[ShankarSangoli posted] (http://stackoverflow.com/a/8795791/218196)와 거의 같습니다. –

+0

@FelixKling 네, 그건 똑같은 것 같습니다. 원래 작성자에게 심판없이 :) –

관련 문제