【问题标题】:jQuery case insensitive contains selector - 1.8.1jQuery 不区分大小写包含选择器 - 1.8.1
【发布时间】:2012-09-06 10:42:18
【问题描述】:

我在执行此操作时遇到了问题。从其他问题我有以下sn-p:

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

但我得到了错误:TypeError: jQuery.expr.createPseudo is not a function

有什么想法吗?另外,这个sn-p应该放在哪里呢?文件准备好了吗?

谢谢,

戴夫

【问题讨论】:

  • 您确定您使用的是 jQuery 1.8.1 吗?也许 jQuery 被加载了两次,并且旧的 jQuery 覆盖了第一个。您可以通过打开 Javascript 控制台并检查 jQuery().jquery 的输出来检查
  • 啊:/页面上有一个旧版本,删除它并确保最新版本现在给我:TypeError: $ is not a function ??
  • 如果页面上确实有多个版本的 jQuery,也许最初是故意的。检查是否存在“.noConflict()”,它会取消绑定 $ 以防它被其他库重新使用。

标签: jquery jquery-selectors contains


【解决方案1】:

不要使用createPseudo

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

来自here
不管你把它放在哪里——你只是定义一个函数,而不是访问 DOM——所以它没有必须document.ready 中。只需确保在定义此过滤器之前加载 jQuery 并在使用它之前定义它。希望这会有所帮助!

【讨论】:

  • 他为什么不用createPseudo? createPseudo 不是创建伪选择器的首选方法,以确保未来的兼容性吗?
  • 我同意 Will 的观点,但还是尝试了这个:我收到一个错误,“Shoo”是我的搜索查询 Error: Syntax error, unrecognized expression: Contains("shoo")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2014-08-04
  • 2013-10-28
  • 2013-04-26
  • 1970-01-01
  • 2014-05-22
  • 2012-02-18
相关资源
最近更新 更多