0

指定された入力名のリストを読み取ってから、スパン名の DIV でそれらの入力名を確認しようとしています。以下のコードを使用すると、レプリケーションで問題が発生します。

$('.right').find(':input').each(function(){
       $(this).change(function(){
       var class_name ='';
       class_name = $(this).attr('name');  

       $('#specs').find('span').each(function(){ 

       if(class_name == $(this).attr('name')){
       //Update the current span with the information from input.

       }else{
       //Add span with class information  
       $('#specs').append("<span name='"+class_name+"'>"+class_name+"</span>");

       }

       });
  });

});

起こっているように見えるのは、スパンが追加されるたびに、追加される次のスパン + 前のスパンが追加されることです。

それで...

次の入力フィールドをクリックしたときにすでに 5 つのスパンがある場合は、1 つのスパンではなく、11 のスパンが追加されます。

なぜこうなった?

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

0

$(this).change(function(){

する必要があります$('.right :input').change(function(){

そして、あなたは削除する必要があります

$('.right').find(':input').each(function(){すべて一緒に。

于 2013-07-14T03:33:20.840 に答える
0

次のようにしてみてください。

$('.right :input').on('change', function() {
    if ( $('span[name="'+ this.name +'"]').length ) { // span already exists
        $('span[name="'+ this.name +'"]').text(this.value);
    } else {
        var span = $('<span />', {name:this.name, text:this.value});
        $('#specs').append(span);
    }
});
于 2013-07-14T03:36:47.460 に答える