是否有不区分大小写的:contains jQuery选择器,或者我应该通过循环所有元素并将它们的.text()与我的字符串进行比较来手动完成这项工作?
发布于 2008-10-09 14:37:24
我最终为jQuery 1.2所做的是:
jQuery.extend(
jQuery.expr[':'], {
Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
});
这将扩展jquery,使其具有不区分大小写的:Contains选择器,而:contains选择器保持不变。
编辑:对于jQuery 1.3 (感谢@user95227)及更高版本,您需要
jQuery.expr[':'].Contains = function(a,i,m){
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
编辑:显然是通过使用
(a.textContent || a.innerText || "")
而不是
jQuery(a).text()
在前面的表达式中,它的速度大大提高了,所以如果速度是一个问题,请自负风险。(参见@John的question)
最新编辑:对于jQuery 1.8,应该是:
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
发布于 2011-02-09 01:11:46
可选地使其不区分大小写:http://bugs.jquery.com/ticket/278
$.extend($.expr[':'], {
'containsi': function(elem, i, match, array)
{
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
然后使用:containsi
而不是:contains
发布于 2009-04-23 22:49:51
从jQuery 1.3开始,此方法已弃用。要使其正常工作,需要将其定义为函数:
jQuery.expr[':'].Contains = function(a,i,m){
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
https://stackoverflow.com/questions/187537
复制相似问题