10 09/2014

jquery contains()

最后更新: Wed Sep 10 2014 12:37:50 GMT+0800

今天再次修改 搜索页面,自己用的更方便一些。加上了多关键字搜索,用的就是 jquery contains()。

$('.content').find('dt:contains("jquery")')

匹配含有 “jquery” 文字的 dt 标签

$('.content').find('dt:contains("jquery"):contains("hexo")')

匹配 同时 含有 “jquery” 和 “hexo” 文字的 dt 标签

$('.content').find('dt:contains("jquery"),dt:contains("hexo")')

匹配含有 “jquery” 或者 “hexo” 文字的 dt 标签

如何让 contains() 不分大小写?

中文没问题,但搜索 Sublime 和 sublime 不一样!所以需要扩展 contains()。以下代码适用于 jquery 1.8 以上

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

老版本 jquery 用下面代码

jQuery.expr[':'].Contains = function(a, i, m) { 
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
};

玩一下