-1

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

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

(它应该从每个项目的开头删除 GG 和 SS.myclass-suggestion并从项目中删除 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>
4

1 回答 1

1

我想你应该使用.text()而不是.html(). 其实.text() returnsa string,里面.html() return的。因此,当您执行“第二次”操作时,您的标记全都搞砸了,因为您将其替换为操作不当(这是您第一次获得的标记)。htmlselectorkeyupstringhtml

作为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/

于 2013-09-18T13:49:49.357 回答