在jQuery中更改if语句
jQuery对我来说太难理解了。每次我不得不使用它时,我都会花几个小时阅读文档,结果一无所获。我正在使用这段代码(可以进行实时编辑) 它在输入文本时实时过滤记录。问题是我不想要它的搜索方法。让我解释一下在jQuery中更改if语句,jquery,html,css,if-statement,Jquery,Html,Css,If Statement,jQuery对我来说太难理解了。每次我不得不使用它时,我都会花几个小时阅读文档,结果一无所获。我正在使用这段代码(可以进行实时编辑) 它在输入文本时实时过滤记录。问题是我不想要它的搜索方法。让我解释一下 <ul id="list"> <li class="in"><span>google.com</span></li> <li class="in"><span>gmail.com</span>
<ul id="list">
<li class="in"><span>google.com</span></li>
<li class="in"><span>gmail.com</span></li>
<li class="in"><span>samsung.com</span></li>
<li class="in"><span>amazon.de</span></li>
<li class="in"><span>apple.de</span></li>
</ul>
或:
或:
但是我无法编辑当前的if语句。每次我破坏脚本时。您的
indexOf
函数检查找到的索引是否大于或等于0。将其设置为等于0以检查字符串的开头:
{
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) == 0;
}
演示:创建一个新的
:startswith
自定义选择器(或:startswithi
,如果需要具体说明),并检查索引上的位置0是否匹配:
请注意,您正在keyup
处理程序事件中添加自定义选择器(在每个keyup上)。我把它移到了开头。我已经在这里看到了一些答案。让我再加上一个选项。。从搜索文本中获取值并创建正则表达式模式,然后在列表元素中查找该模式。我不是专家,但这是我马上想到的。希望这对某人有所帮助:)旁注:您已经将您的:containsi
jQuery扩展嵌套在keyup
处理程序中!最好你重新格式化你的代码,看看嵌套有一些紧迫:)嗨,谢谢你的答复。你为什么这么说?您的意思是这可能是性能问题吗?当代码只需要初始化一次时,您不应该不必要地反复运行代码。我担心你可能还有其他类似的问题。最好避免这种情况。我真不敢相信我竟然错过了那部分。。。谢谢你,托尼,我明白了。你完全正确。关键事件毫无意义。非常感谢。
<ul id="list">
<li class="in"><span>google.com</span></li>
<li class="hiding out hidden"><span>gmail.com</span></li>
<li class="hiding out hidden"><span>samsung.com</span></li>
<li class="hiding out hidden"><span>amazon.de</span></li>
<li class="hiding out hidden"><span>apple.de</span></li>
</ul>
indexOf(searchTerm)
[span^="'+searchTerm+'"]
str.match(/^searchTerm/)
{
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) == 0;
}
//extends :contains to be case insensitive
$.extend($.expr[':'], {
'startswith': function (elem, i, match, array) {
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) == 0;
}
});