Kaip padaryti, kad jQuery sudėtyje yra nejautrus, įskaitant jQuery 1.8+?

Bandau naudoti registrą, kuriame yra nesaugi. Bandžiau naudoti sprendimą šiuo klausimu, tačiau jis neveikė:

Ar yra jutiklinis „jQuery“: yra parinkiklis?

Kad būtų patogiau, čia kopijuojamas sprendimas:

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

Pateikiama klaida:

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

Čia, kur aš jį naudoju:

  $('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"); } }); 

Naudojant originalų, didžiosios ir mažosios raidės „turinį“ tame pačiame scenarijuje veikia be klaidų. Ar kas nors turi idėjų? Būčiau dėkingas.

91
04 февр. Matrym nustatytas vasario 04 d 2010-02-04 03:51 '10 at 3:51 2010-02-04 03:51
@ 6 atsakymai

Tai, ką naudoju dabartiniame projekte, nebuvo jokių problemų. Pažiūrėkite, ar turite daugiau laimės šiuo formatu:

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

Jei jQuery 1,8 API tai pasikeitė, jQuery 1.8+ versija bus tokia:

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

Čia galite jį patikrinti . Daugiau informacijos apie pasirinktinius 1.8 + selektorius rasite čia .

126
04 февр. atsakymas, kurį pateikė Nick Craver 04 vasaris 2010-02-04 03:59 '10 at 3:59 2010-02-04 03:59

Verta pažymėti, kad atsakymas yra teisingas, bet apima tik :Contains , o ne slapyvardį :Contains , kuris gali sukelti netikėtą elgesį (arba gali būti naudojamas kuriant pažangias programas, kurioms reikia tiek jautrios, tiek nejautros paieškos).

Tai galima išspręsti pasikartojant pseudonimo pratęsimą:

border=0
 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; }; 

Išleido man suprasti, kodėl tai man neveikia.

43
27 апр. Ellipsis atsakė 27 balandžio. 2011-04-27 07:31 '11 at 7:31 am 2011-04-27 07:31

Norėčiau tai padaryti.

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

Ir palikite :contains vienas ...

Demo

Tad kodėl jQuery nepalaiko šios bibliotekos?! jei taip paprasta ...

nes Turkijos kodo kodas praeina?

26
23 февр. Atsakymą Mina Gabriel pateikė vasario 23 d. 2013-02-23 00:56 '13, 0:56, 2013-02-23 00:56

Galbūt vėlai ... bet

Norėčiau eiti tokiu būdu.

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

Taigi jums nereikės su jQuery NATIVE „.contains“ ... Jums gali prireikti vėliau, jei ... suklastojote, galite grįžti į StackOverflow ...

5
27 мая '13 в 19:16 2013-05-27 19:16 atsakymą pateikė ErickBest , gegužės 27 d. 13 val. 19:16 2013-05-27 19:16

Norėčiau visiškai ignoruoti jQuery atvejų jautrumą, kad galėčiau pasiekti tai, ką noriu naudoti pagal kodą:

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

Naudodami šią nuorodą galite rasti kodą, pagrįstą jQuery versijomis, kad ignoruotumėte atvejų jautrumą, https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

Be to, jei norite naudoti: yra ir atlieka paiešką, galite pažvelgti į tai: http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide- atitinkamai

0
11 янв. Atsakymas duotas Umesh Patil 11 jan. 2016-01-11 14:02 '16 at 14:02 pm 2016-01-11 14:02

Leiskite pridėti draugų:

 $.expr[":"].containsNoCase = function (el, i, m) { var search = m[3]; if (!search) return false; return eval("/" + search + "/i").test($(el).text()); }; 
0
11 февр. Atsakymą pateikė bresleveloper 11 vasaris. 2014-02-11 11:38 '14 at 11:38 2014-02-11 11:38