Javascript jQuery在第二次键控后停止工作
我的代码在第一次按键时工作正常,但在按下另一个键后会中断,然后在再按几个键后随机工作正常,我不明白为什么。。。我的代码看起来应该工作得很好,但它不Javascript jQuery在第二次键控后停止工作,javascript,jquery,html,Javascript,Jquery,Html,我的代码在第一次按键时工作正常,但在按下另一个键后会中断,然后在再按几个键后随机工作正常,我不明白为什么。。。我的代码看起来应该工作得很好,但它不 jQuery("#myid").keyup(function() { jQuery(".myclasss-suggestion").each(function(){ if(jQuery(this).html().substr(0, 2) == "GG"){ jQuer
jQuery("#myid").keyup(function() {
jQuery(".myclasss-suggestion").each(function(){
if(jQuery(this).html().substr(0, 2) == "GG"){
jQuery(this).removeClass("ss");
jQuery(this).html(jQuery(this).html().substring(2, jQuery(this).html().length));
}else{
jQuery(this).removeClass("gg");
jQuery(this).html(jQuery(this).html().substring(2, jQuery(this).html().length));
}
});
});
(它应该从每个.myclass suggestion
的开头删除GG和SS类,并从项目中删除GG或SS类,在按下第一个键时执行此操作,然后停止工作)
它正在使用的HTML:
<input id="myid" >
<div class="myclasss-suggestions">
<div class="myclasss-suggestion ss gg" data-index="0">GGContent</div>
<div class="myclasss-suggestion ss gg" data-index="1">GGContent</div>
<div class="myclasss-suggestion ss gg" data-index="2">GGContent</div>
<div class="myclasss-suggestion ss gg" data-index="3">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="4">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="5">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="6">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="7">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="8">SSContent</div>
<div class="myclasss-suggestion ss gg" data-index="9">SSContent</div>
</div>
GGContent
GGContent
GGContent
内容
内容
内容
内容
内容
内容
内容
我想你应该使用.text()
而不是.html()
。事实上,.text()
返回是一个字符串
,.html()
返回选择器内的html
。因此,当您执行“第二次”keyup
时,您的标记都是乱七八糟的,因为您正在用一个错误的字符串替换它(这是您第一次获得的html
标记)
截至jquery DOC
.html()
Get the HTML contents of the first element in the set of matched elements.
.text()
Get the combined text contents of each element in the set of matched elements
including their descendants.
尝试:
jQuery("#myid").keyup(function() {
jQuery(".myclasss-suggestion").each(function(){
if(jQuery(this).text().substr(0, 2) == "GG"){
jQuery(this).removeClass("ss")
.text(jQuery(this).text().substring(2, jQuery(this).text().length));
}
if(jQuery(this).text().substr(0, 2) == "SS") {
jQuery(this).removeClass("gg")
.text(jQuery(this).html().substring(2, jQuery(this).text().length));
}
});
});
fiddle:请给我们看一下您的HTML好吗?是否有太多的处理发生,因为在每个键上都有循环发生?@Hello World是的,但最长的过程是在第一个键上,因为一个字母的匹配最多,然后循环减少。。。所以我很困惑为什么它会停止工作,我会尝试现在发布一些html。如果我使用.text(),这并不重要
或.html()代码>这两个结果都是相同的html到原始POSI添加的FIDLE查看它