Mat*_*rym 91 jquery contains case-sensitive case-insensitive
我正在尝试使用"包含"不区分大小写.我尝试在以下stackoverflow问题中使用该解决方案,但它不起作用:
为方便起见,此处将复制解决方案:
jQuery.extend(
jQuery.expr[':'], {
Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
});
Run Code Online (Sandbox Code Playgroud)
这是错误:
Error: q is not a function
Source File: /js/jquery-1.4.js?ver=1.4
Line: 81
Run Code Online (Sandbox Code Playgroud)
这是我正在使用它的地方:
$('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");
}
});
Run Code Online (Sandbox Code Playgroud)
我在同一场景中使用原始区分大小写的"包含",没有任何错误.有没有人有任何想法?我很感激.
Nic*_*ver 127
这是我在当前项目中使用的,没有任何问题.看看你是否有更好的运气这种格式:
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
Run Code Online (Sandbox Code Playgroud)
在jQuery 1.8中,这个API改变了,jQuery 1.8+版本将是:
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试一下.有关1.8+自定义选择器的更多详细信息,请查看Sizzle wiki.
Ell*_*sis 43
值得注意的是,答案是正确的,但只是涵盖:Contains
,而不是:contains
可能导致意外行为的别名(或者可能被设计用于需要敏感和不敏感搜索的高级应用程序).
这可以通过复制别名的扩展来解决:
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;
};
Run Code Online (Sandbox Code Playgroud)
花了一些时间来弄清楚它为什么不适合我.
Min*_*iel 27
我会做这样的事情
$.expr[':'].containsIgnoreCase = function (n, i, m) {
return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
Run Code Online (Sandbox Code Playgroud)
并留下:contains
一个人...
那么为什么jQuery不支持它的库?!如果这很容易......
可能会迟到......但是,
我宁愿这样走..
$.extend($.expr[":"], {
"MyCaseInsensitiveContains": function(elem, i, match, array) {
return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
Run Code Online (Sandbox Code Playgroud)
这样,你不要篡改jQuery的NATIVE'.contains' ......稍后你可能需要默认的...如果被篡改,你可能会发现自己回到stackOverFlow ......
归档时间: |
|
查看次数: |
52584 次 |
最近记录: |