toLowerCase(),在jquery中带有“filter”
toLowerCase() with `filter` in jquery
如何在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
没有被提取。在这种情况下,比较它没有返回这个元素,我做错了什么?
点击此处http://jsfiddle.net/7xK82/
:contains
jQuery选择器区分大小写,因此您需要像已经做过的那样手动筛选它。您应该做的只是删除选择器的:contains
部分,然后获取所有<option>
并过滤它们,例如:
var lookup = 'sale';
var elem = $('#drpParty > option').filter(function() {
return $(this).text().toLowerCase() === lookup.toLowerCase();
});
请注意,出于性能原因,通常最好使用>
在选择器中明确指定它是子元素,而不是只查找<select>
元素的任何子元素。
只需无意识地比较
var lookup = 'Sale';
var insensitive = lookup.toLowerCase();
var elem=$('#drpParty').find('option').filter(function() {
return $(this).text().toLowerCase() === insensitive;
});
console.log(elem.val());
http://jsfiddle.net/7xK82/4/
您可以制作自己的不区分大小写的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再次更改其内部功能和结构,它可能会崩溃。
相关文章:
- toLowerCase(),在jquery中带有“filter”
- 显示与img最接近的li的JQuery Filter
- jQuery if and else with filter
- 在 jQuery filter 箭头函数中使用它
- jQuery 将不同的文本保存在使用 jquery filter 提取的同一标签中
- 在 Jquery 中使用 queue() 和 filter() 链接会提高性能吗?
- jQuery filter 和 html 返回奇怪的结果
- jQuery.filter可以在body标签上工作吗?
- jQuery Mobile - filter data-filtertext AND text
- jQuery "Chosen" on-filter event?
- jQuery .filter 正在使用 .css(display),但不能使用 .css(background-colo
- jQuery .filter() 不起作用
- Jquery Filter <li> on Multiselect
- jQuery filter() 和 find() 都返回 AJAX 响应的错误
- 使用 jQuery.filter 获取 ajax 响应的一部分失败
- 复杂的jQuery filter()不工作
- 更改Jquery.filter()函数内的变量值
- jQuery filter()与Internet Explorer 6-7-8的兼容性
- jquery filter()在我的代码中返回函数混淆
- jQuery filter(this.hash) 当不是 标签时