Come faccio a fare jQuery Contiene distinzione tra maiuscole e minuscole, tra cui jQuery 1.8+?

Sto cercando di usare il “contiene” /minuscole. Ho provato ad utilizzare la soluzione al seguente stackoverflow domanda, ma non ha funzionato:

C’è una distinzione tra maiuscole e minuscole jQuery :contiene il selettore?

Per comodità, la soluzione è copiato qui:

jQuery.extend(
        jQuery.expr[':'], { 
                Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" 
});

È qui l’errore:

Error: q is not a function
Source File: /js/jquery-1.4.js?ver=1.4
Line: 81

Qui è dove io sto usando:

  $('input.preset').keyup(function() {
    $(this).next().find("li").removeClass("bold");
    var theMatch = $(this).val();
    if (theMatch.length > 1){
      theMatch = "li:Contains('" + theMatch + "')";
      $(this).next().find(theMatch).addClass("bold");
    }
  });

Mio uso delle maiuscole e minuscole “contiene” nello stesso scenario funziona senza errori. Qualcuno ha qualche idea? Sarei grato.

Nel caso In cui qualcuno è interessato, ho aggiornato il mio post sul blog su altri tre contiene selettori :containsExact, :containsExactCase e :containsRegex di selettori per ora funziona in tutte le versioni di jQuery.
Vedere css-tricks.com/snippets/jquery/…,

OriginaleL’autore Matrym | 2010-02-04

6 Replies
  1. 126

    Questo è quello che sto usando in un progetto, non hanno avuto alcun problema. Vedere se si hanno più fortuna con questo formato:

    jQuery.expr[':'].Contains = function(a, i, m) { 
      return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
    };

    In jQuery 1.8 API per questo è cambiato, jQuery 1.8+ versione di questo potrebbe essere:

    jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
        return function( elem ) {
            return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
        };
    });

    Puoi provare qui. Per ulteriori dettagli sul 1.8+ personalizzato selettori, controllare il Sizzle wiki qui.

    Grazie! Questo funziona ancora perfettamente con jQuery 1.6.1.
    Qualche possibilità che tu possa parlare esattamente di cosa si sta facendo?
    grazie per il testa a testa, ho fornito un 1.8+ metodo di fare lo stesso, fatemi sapere se avete problemi.
    Notare che questo non sostituisce :contiene solo aggiungere un altro selettore :Contiene.
    il selettore deve essere chiamato icontains, o qualcosa di simile.

    OriginaleL’autore Nick Craver

  2. 43

    Vale la pena notare che la risposta è corretta, ma copre solo :Contains, e non l’alias :contains che potrebbero causare un comportamento imprevisto (o che potrebbero essere utilizzati dal design avanzato per le applicazioni che richiedono sia sensibile e insensibile di ricerca).

    Questo potrebbe essere risolto mediante la duplicazione di estensione per alias:

    jQuery.expr[':'].Contains = function(a, i, m) { 
      return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
    };
    jQuery.expr[':'].contains = function(a, i, m) { 
      return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
    };

    Mi ha preso un po ‘ per capire perché non funziona per me.

    Avrei commentato questo sopra, ma a quanto pare non sono in grado di.
    Io non sono sicuro di cosa stai facendo qui. Questo sostituisce il previsto, documentato comportamento di :contains. Penso che più chiaro di lasciare l’originale :contains da solo e chiamare il nuovo selettore :icontains.
    Capito il punto del mio post. La creazione di un’alternativa di selezione è sicuramente una valida opzione, tuttavia mi è stato sottolineando che l’estensione :contiene, ma trascurando di estendere :Contiene potrebbe portare a confusione per l’utente, quando si ottengano risultati diversi.
    Allora grazie per la condivisione di questo: “ti ho visto.” 🙂 Comunque, penso che sia una buona idea per ricordare che è meglio non ignorare il comportamento incorporato, quando è meno lavoro per costruire un non-distruttiva, comportamento parallelo.
    Ho provato un paio di soluzioni diverse inviato per questo e questo, infine, si è lavorato. grazie.

    OriginaleL’autore Ellipsis

  3. 26

    Vorrei fare qualcosa di simile a questo

         $.expr[':'].containsIgnoreCase = function (n, i, m) {
            return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
        };

    E Lasciare :contains Da Solo…

    DEMO

    Perché jQuery non supporta nella libreria?! se è così facile…

    perché Fa il tuo codice di passare la turchia codice?

    Perfetto! Grazie 🙂
    Questo dovrebbe essere accettato risposta.

    OriginaleL’autore Mina Gabriel

  4. 5

    Potrebbe essere tardi…. ma,

    Io preferisco andare in questo modo..

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

    In questo modo, si NON tamper con jQuery NATIVO ‘.contiene’… Si potrebbe aver bisogno di default dopo…se manomesso, si potrebbe trovare te stesso torna a stackOverFlow

    OriginaleL’autore ErickBest

  5. 0

    mi permetto di aggiungere i miei amici:

    $.expr[":"].containsNoCase = function (el, i, m) { 
        var search = m[3]; 
        if (!search) return false; 
        return eval("/" + search + "/i").test($(el).text()); 
    }; 

    OriginaleL’autore bresleveloper

  6. 0

    Ero solo in grado di ignorare jQuery maiuscole e minuscole di tutto per ottenere quello che voglio usando il codice qui sotto:

                $.expr[":"].contains = $.expr.createPseudo(function(arg) {
                return function( elem ) {
                    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
                };
            });

    È possibile utilizzare questo link per trovare il codice basato su jQuery versioni di ignorare caso di sensibilità,
    https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

    Anche se si desidera utilizzare :contiene e fare qualche ricerca, potreste voler dare un’occhiata a questo: http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly

    OriginaleL’autore Umesh Patil

Lascia un commento