jQuery 在第二次抠像后停止工作

jQuery stops working after second keyup

本文关键字:停止工作 第二次 jQuery      更新时间:2023-09-26

我的代码在第一次键上工作正常,但是一旦按下另一个键就会中断,然后在再按几个键后随机工作正常,我不知道为什么......我的代码看起来应该可以正常工作,但它没有...

    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>

我想你应该使用.text()而不是.html()。事实上,.text() return是一个string.html() return selector里面的html。因此,当你执行"第二次"keyup时,你的标记都搞砸了,因为你用一个操作不当的string替换它(这是你第一次得到的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.

http://api.jquery.com/html/

http://api.jquery.com/text/

尝试使用 :

 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));
            }
        });
    });

小提琴:http://jsfiddle.net/VhtAU/