0

ここには、ユーザーがいくつかの div をクリックできるサイトがあります。次に、次のコードを使用して「X」を追加します。

function addEx( elem, insertClass ) {
        var element = $( elem );
        var newInsertClass = insertClass.replace('.', '');
        var insert = "<span class='" + newInsertClass + "'> X </span>";

        element.click(function(){
            var $this = $(this);

            if( $this.text().indexOf( "X" ) >= 0 ) {
                var id = $this.attr( "id" );
                $( "#" + id + " " + insertClass ).remove();
            } else {
                $this.append( insert );
            }   
        })
    }

ご覧のとおり、「X」が既にある場合は削除します。ない場合は、追加します。これはうまくいきます。

ユーザーは「結果を取得」ボタンをクリックすることもできます。次に、ユーザーがクリックした div が正しい回答と比較されます。これに従って、正しくクリックされた、またはクリックしすぎた、またはクリックし忘れた div にクラスを追加します。これも機能しますが、コンテンツ (「X」) が失われます。したがって、これらのクラスに提供した CSS スタイリングを見ることができますが、オリジナルをクローンに置き換えた後、div 内の「X」が欠落しています。クラスを追加するには、次のコードを使用します。

var test = $(".test");
var clone = test.clone(true,true);


function correction() {
    clone.children().filter(function() {
        return $.inArray('#' + this.id, forgotten) != -1;
    }).addClass("forgotten").end().filter(function() {
         return $.inArray('#' + this.id, toomuch) != -1;
    }).addClass("toomuch").end().filter(function() {
         return $.inArray('#' + this.id, correct) != -1;
    }).addClass("right");

   test.replaceWith(clone);                   
 }

ここで要素を複製し、その複製に適切なクラスを追加して、元の要素を複製で置き換えます。

私の質問は次のとおりです。このコンテンツの損失を防ぐにはどうすればよいですか? 「X」が動的に追加されるためだと思いますか?または、複数の要素が.testあります-これが原因でしょうか?

4

1 に答える 1

1

John Resigが、jQuery を使用したオブジェクトの複製に関する質問に回答しましたそれはあなたを助けるかもしれません

于 2012-07-23T14:02:42.423 に答える