ここには、ユーザーがいくつかの 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
あります-これが原因でしょうか?