jQuery不区分大小写,包含选择器-1.8.1

jQuery不区分大小写,包含选择器-1.8.1,jquery,jquery-selectors,contains,Jquery,Jquery Selectors,Contains,我在实现这一点上遇到了困难。从其他问题中,我有以下片段: jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) { return function( elem ) { return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; }); 但是我得到了错误:TypeError:jQuery

我在实现这一点上遇到了困难。从其他问题中,我有以下片段:

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});
但是我得到了错误:
TypeError:jQuery.expr.createPseudo不是一个函数

有什么想法吗?另外,这个代码段应该放在哪里?文件准备好了吗

谢谢


Dave

不要使用
createPseudo

jQuery.expr[":"].Contains = function(obj,index,meta) {
    return jQuery(obj).text().toUpperCase().indexOf(meta[3].toUpperCase()) >= 0;
};
来自。

把它放在哪里并不重要——你只是定义了一个函数,而不是访问DOM——因此它不必在
document.ready
中。只需确保在定义这个过滤器之前加载jQuery,并在使用它之前定义它。希望这有帮助

您确定使用的是jQuery 1.8.1吗?也许jQuery被加载了两次,而较旧的jQuery正在重写第一次。您可以通过打开Javascript控制台并检查jQuery()的输出来进行检查。jqueryAh:/页面上有一个较旧的版本,删除它并确保现在有最新的版本,这给了我:
TypeError:$不是一个函数
?如果页面上确实有多个jQuery版本,可能是最初有意的。检查是否存在“.noConflict()”,它会解除$的绑定,以防其他库重复使用它。他为什么不使用createPseudo?createPseudo不是创建伪选择器的首选方法,以确保将来的兼容性吗?我同意Will的观点,但还是尝试了这个方法:我得到一个错误,“Shoo”是我的搜索查询
错误:语法错误,无法识别的表达式:Contains(“Shoo”)