Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在第二次键控后停止工作_Javascript_Jquery_Html - Fatal编程技术网

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查看它