2013-10-19 13 views
32

ich folgendes mit Attribut tue enthält Selektor $('[attribute*=value]')Groß- und Kleinschreibung jQuery Attributselektor

<input name="man-news"> 
<input name="milkMan"> 

<script>  
    $("input[name*='man']").css("background-color:black"); 
</script> 

Dies funktioniert für den ersten Eingang, aber nicht der zweite Eingang als „Man“ hat ein großes „M

Wie kann ich $("input[name*='man']") eine Groß-und Kleinschreibung Selektor machen?

+1

möglich Duplikat [CSS-Selektor Fall unempfindlich für Attribute] (http://stackoverflow.com/questions/5671238/css-selector-case-insensitive-for-attributes) – falinsky

+0

Mögliches Duplikat von [Groß-/Kleinschreibung-abhängiger Attributwertselektor mit Jquery] (http: // stackoverflo w.com/questions/5755722/case-sensitive-attribute-value-selector-with-jquery) –

Antwort

31

Sie können immer .filter() verwenden:

var mans = $('input').filter(function() { 
    return $(this).attr('name').toLowerCase().indexOf('man') > -1; 
}); 

mans.css('background-color', 'black'); 

Der Schlüssel ist hier Teil toLowerCase() ist, die in Kleinbuchstaben umwandelt das name Attribut, so dass Sie es testen man für enthält.

2
var control = $('input').filter(function() { 
    return /*REGEX_VALUE*/i.test($(this).attr('id')); 
}); 

* REGEX_VALUE * - der Wert, den Sie finden möchten

ich mit regex endete bis zu validieren, ob das Attribut ‚ID‘ erfüllen ... regex ist viel flexibler, wenn Sie eine bestimmte finden wollen Übereinstimmungswert oder Werte, Groß- und Kleinschreibung oder unempfindlich oder einen bestimmten Bereich von Werten ...

1

ich war nur in der Lage jQuery Fall sensetivity ganz zu ignorieren zu erreichen, was ich will unter Code,

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

können Sie diesen Link verwenden, um Code auf der Grundlage Ihrer jQuery Versionen zu finden, https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

Auch dieser Artikel dort ist, wo es viele gute Dinge mit jquery tut: http://www.ultechspot.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly

36

Der einfachste Weg, dies zu tun ist, fügen Sie einen Fall Unempfindlichkeit Flag 'i' in der regex Teil des Wählers:

Also statt

$("input[name*='man']")

Sie könnten

$("input[name*='man' i]")

JS Geige tun: https://jsfiddle.net/uoxvwxd1/3/

+6

FYI: Funktioniert in Chrome 53, aber nicht IE 11, so interessant, aber nicht ideal – Stan

+0

@Stan Das weht mir durch den Kopf. Ich sah verschiedene Ergebnisse in Chrome und IE11 und dachte, dass das nicht sein könnte; da muss noch ein anderer Unterschied sein. Dann habe ich deinen Kommentar gesehen. Ich dachte der ganze Sinn von jQuery war Browserunabhängigkeit. Ich würde besonders erwarten, dass dies stimmt, wenn es um Interna wie die Selector-Syntax geht. Irgendwelche Ideen, warum dieser Unterschied existiert oder ob/wo er dokumentiert ist? – BlueMonkMN

+0

@BlueMonkMN Es war ein Jahr und ich habe nicht erneut getestet, aber meine Vermutung wäre, dass IE REGEX Handhabung ist, die für den Unterschied verantwortlich ist. – Stan

0

Dies funktioniert für mich mit jQuery und wenn ich hinzufüge Element an einen Tisch

// check if item already exists in table 
    var inputValue = $('#input').val(); // input 
    var checkitem = $('#exampleTable td.value div.editable').filter(function() { 

     //check each table's editable div matches the input value in lowercase 
     if ($(this).text().toLowerCase() === inputValue.toLowerCase()) { 
      itemexists = true; 
     } 
    }); 

    if (itemexists) { 
     alert("item exists in the table"); 
     return; 
    } 
Verwandte Themen