Селектор атрибутов jQuery, нечувствительный к регистру
Я использую следующий атрибут: selector $('[attribute * = value]')
<input name="man-news">
<input name="milkMan">
<script>
$( "input[name*='man']").css("background-color:black");
</script>
Это работает для первого входа, но не для второго ввода, поскольку " Человек" имеет капитал " М"
Как сделать $( "input[name*='man']")
селектор без учета регистра?
Ответы
Ответ 1
Вы всегда можете использовать .filter()
:
var mans = $('input').filter(function() {
return $(this).attr('name').toLowerCase().indexOf('man') > -1;
});
mans.css('background-color', 'black');
Ключевая часть здесь toLowerCase()
, которая уменьшает атрибут name
, позволяя вам протестировать его для размещения man
.
Ответ 2
Самый простой способ сделать это - добавить флагом нечувствительности к регистру "i" внутри регулярной части селектора:
Итак, вместо
$( "input[name*='man']")
Вы могли бы сделать
$( "input[name*='man' i]")
JS скрипт: https://jsfiddle.net/uoxvwxd1/3/
Ответ 3
var control = $('input').filter(function() {
return /*REGEX_VALUE*/i.test($(this).attr('id'));
});
* REGEX_VALUE * - значение, которое вы хотите найти
Я закончил использовать регулярное выражение для проверки того, удовлетворяет ли идентификатор ID... regex гораздо более гибко, если вы хотите найти определенное совпадающее значение или значения, чувствительные к регистру или нечувствительные или определенные диапазоны значений...
Ответ 4
Я просто смог полностью игнорировать чувствительность к регистру jQuery, чтобы добиться того, чего я хочу, используя приведенный ниже код,
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
Вы можете использовать эту ссылку, чтобы найти код, основанный на ваших версиях jQuery,
https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/
Также есть статья, где он делает много хорошего с jQuery: http://www.ultechspot.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly
Ответ 5
Это работает для меня с помощью jQuery и если я добавляю элемент в таблицу
// check if item already exists in table
var inputValue = $('#input').val(); // input
var checkitem = $('#exampleTable td.value div.editable').filter(function() {
//check each table 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;
}