2012-01-09 29 views
8

jQuery contain kullanarak bir girdide verilen bir dizeyi div içeriğine karşılaştırmaya çalışıyorum.jQuery kullanımı ve toLowerCase()

Sorun şu ki, büyük/küçük harflerden bağımsız olarak dizenin içerip içermediğini kontrol edebilmek istiyorum. .dDimension div biri 'tarihi' içeriyor ve bir kullanıcı 'd' tuşuna basarsa

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

Yani, söz konusu öğeyi göstermek istiyorum:

Bu benim fonksiyondur.

Bu mümkün mü?

+1

olası yinelenen bir vaka duyarsız jQuery var mı

$.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"); 

cevap

18

Sen .filter[docs] kullanabilirsiniz:

var dInput = this.value.toLowerCase(); 

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

Tersi kontrol etmek için '' '' fonksiyonunu kullanabilir miyim? –

+0

Elbette. Ya da '> -1' yerine' === -1' değiştirirsiniz. –

+0

Teşekkürler! Mükemmel çalışıyor. –

1

Sen jQuery uzatarak kendi seçici yazabilirsiniz. the jQuery documentation for contains son yorumlar size uygun olabilecek bir 'icontains' uygulamasını sağlar bu

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

kullanım hızı $(".dDimension:containsi('" + dInput + "')").css("display","block");

1

this example göz at, o containsi, böyle çağrıları harf duyarsız içeren seçici ile jQuery seçicileri uzatmak: seçiciyi içeriyor?] (http://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector)
+0

Bu [ShankarSangoli'nin yayınladığı] ile hemen hemen aynı (http://stackoverflow.com/a/8795791/218196). –

+0

@FelixKling Evet, aynı şey gibi görünüyor. Orijinal yazara ref olmadan olsa :) –