如何在jquery中使用toLowerCase()
filter()
?
以下是我的下拉列表:
<select id="drpParty" name="drpParty" data-placeholder="Choose Party...." required="" class="chzn-select span8 row-fluid">
<option value="-1" selected="" disabled="">Chose Customer</option>
<option value="1">Party Ahmed</option>
<option value="2">Party Ahmed</option>
<option value="3">Ukraine</option>
<option value="5">America</option>
<option value="6">Indonesia</option>
<option value="8">wheere</option>
<option value="9">new party</option>
<option value="10">Nwe Pary</option>
<option value="11">Latest party </option>
<option value="12">sha</option>
<option value="13">shaj</option>
<option value="14">My new party without salesman info</option>
<option value="15">testing the latest party with hierarchy</option>
<option value="16">testing the value</option>
<option value="17">Kamran Ahmed</option>
<option value="18">Testing a new party</option>
<option value="19">Sale</option>
</select>
我想获取具有“Sale”的选项作为文本。我正在使用以下内容,它可以完美地找到option
:
var lookup = 'Sale';
var elem=$('#drpParty option:contains('+ lookup +')').filter(function() {
return $(this).text() === lookup;
});
console.log(elem.val());
现在文本Sale
在下拉列表中可能不一定是这种情况,即它可能都是大写或全部小写,所以我试着这样做,即制作option
的文本小写,然后将其与lookup
:
var lookup = 'sale';
var elem=$('#drpParty option:contains('+ lookup +')').filter(function() {
return $(this).text().toLowerCase() === lookup;
});
console.log(elem.val());
但它不起作用,即未提取option
。在这种情况下它没有返回此元素的比较我做错了什么?
答案 0 :(得分:4)
:contains
jQuery选择器区分大小写,因此您需要手动过滤它,就像您已经完成的那样。你应该做的只是删除选择器的:contains
部分,然后抓住所有<option>
并过滤它们,例如:
var lookup = 'sale';
var elem = $('#drpParty > option').filter(function() {
return $(this).text().toLowerCase() === lookup.toLowerCase();
});
请注意,出于性能原因,通常使用>
在您的选择器中明确指定它是子元素,而不是只查找<select>
元素的任何后代。
答案 1 :(得分:3)
只是不敏感地比较它们
var lookup = 'Sale';
var insensitive = lookup.toLowerCase();
var elem=$('#drpParty').find('option').filter(function() {
return $(this).text().toLowerCase() === insensitive;
});
console.log(elem.val());
答案 2 :(得分:1)
您可以制作自己不区分大小写的contains
过滤器
// to make :contains case insensitive!!!
$.expr[":"].contains = $.expr.createPseudo(function (arg) {
return function (elem) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
执行上述代码后,:contains
过滤器将变为不区分大小写,您可以在任何地方使用它而无需任何其他关心字符大小写。确保它只在加载jQuery后运行,并且只需运行一次。
如果/当jQuery再次改变它的内部函数和结构时,它可能会中断。