jQuery在第二个keyup后停止工作

时间:2013-09-18 13:47:21

标签: javascript jquery html

我的代码在第一个键盘制作时工作正常,但是一旦按下另一个键就会中断,然后在按下几个键之后随机工作正常,我无法弄清楚为什么......我的代码看起来应该工作得很好,但它没有......

    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>

1 个答案:

答案 0 :(得分:1)

我猜您应该使用.text()代替.html()。事实上,.text() returnstring.html() return html内的selector。因此,当你执行“第二次”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/