-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() returnstring.html() returnそのhtmlselector。したがって、「2番目」のマークアップを行うと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/

于 2013-09-18T13:49:49.357 に答える