jquery 1.8包含不区分大小写的+;开始于
我正在寻找jquerys:contains选择器的插件/扩展,它不区分大小写,只匹配以:contains text开头的单词 这样,如果您键入“count”,您将不会得到“account”结果 提前谢谢 编辑:我最终得出以下结论jquery 1.8包含不区分大小写的+;开始于,jquery,contains,case-insensitive,startswith,Jquery,Contains,Case Insensitive,Startswith,我正在寻找jquerys:contains选择器的插件/扩展,它不区分大小写,只匹配以:contains text开头的单词 这样,如果您键入“count”,您将不会得到“account”结果 提前谢谢 编辑:我最终得出以下结论 $.expr.pseudos.Contains = $.expr.createPseudo(function(arg) { return function(elem) { var sentence = $(elem).text().trim().toLowerCas
$.expr.pseudos.Contains = $.expr.createPseudo(function(arg) {
return function(elem) {
var sentence = $(elem).text().trim().toLowerCase();
var words = sentence.split(' ');
arg = arg.toLowerCase();
var args = arg.split(' ');
var searchfound = true;
for(var ix = 0, lx = args.length; ix < lx; ix++) {
var thisfound = false;
for(var i = 0, l = words.length; i < l; i++) {
var wordpos = sentence.indexOf(words[i]);
var restofsentence = sentence.slice(wordpos, wordpos+args[ix].trim().length);
if(restofsentence == args[ix].trim() ){
thisfound = true;
}
}
if (thisfound == false) {
searchfound = false;
}
}
return searchfound;
};
});
$.expr.pseudos.Contains=$.expr.createPseudo(函数(arg){
返回函数(elem){
var语句=$(elem.text().trim().toLowerCase();
变量词=句子分割(“”);
arg=arg.toLowerCase();
变量args=参数拆分(“”);
var searchfound=true;
for(var ix=0,lx=args.length;ix
它从每个搜索条目的开头开始搜索,如果存在匹配项,则返回true,而不考虑条目顺序。您可以轻松地为此创建自己的伪选择器:
$.expr.pseudos.startsWith = $.expr.createPseudo(function(arg) {
return function(elem) {
return $(elem).text().trim().slice(0, arg.length).toLowerCase() == arg.toLowerCase();
};
});
要匹配任何单词,您需要按空格拆分它们并在集合中迭代:
$.expr.pseudos.anyWordStartsWith = $.expr.createPseudo(function(arg) {
return function(elem) {
var words = $(elem).text().trim().toLowerCase().split(' ');
arg = arg.toLowerCase();
for(var i = 0, l = words.length; i < l; i++) {
if(words[i].slice(0, arg.length) == arg)
return true;
}
return false;
};
});
$.expr.pseudos.anyWordStartsWith=$.expr.createPseudo(函数(arg){
返回函数(elem){
var words=$(elem.text().trim().toLowerCase().split(“”);
arg=arg.toLowerCase();
for(var i=0,l=words.length;i
函数获取主题元素的内容text()
,修剪任何空格,将其转换为小写,以便进行不区分大小写的比较,并将字符串拆分为一个数组,其中空格被视为列表分隔符(“ab c”=>[“a”、“b”、“c”]
)
然后,它将搜索短语arg
转换为小写,这也是为了进行不区分大小写的比较
它继续迭代单词数组,并将每个单词的子字符串与目标短语进行比较。我使用的是.slice(0,n)
而不是.substring(0,n)
,因为后者会抱怨主题字符串的长度小于n
个字符
如果找到任何这样的匹配,迭代将立即中断,返回true,否则,它将遍历整个集合并到达最后一行,返回false。@JoeFletch我正在寻找一个搜索函数,搜索人员及其职业的列表这几乎就是我要寻找的-但这只查找第一个单词-可以修改为在选择器中查找每个单词吗?:)我只懂一半-但它像一个魅力-非常感谢:D@afcdesign:很高兴你喜欢它,我按指令说明添加了一条指令。不过有一个小问题——我有一个名字:“Alex Qin”,如果我搜索“Alex”或“Qin”,他会出现在结果中——但如果我键入“Alex Qin”,他不会显示——这怎么纠正呢?@afcdesign:当然,这是因为我们现在搜索的是每个单词,而不是
“Alex”
或“Qin”
以输入的“Alex Qin
”开始。您必须执行第一个代码段的全文搜索和第二个代码段的逐字搜索。我相信你能想出如何将它们组合成一个函数。