私はボタンをクリックしてdivにコンテンツを追加するページを作成しています。今、私は3つのボタンを持っています。すべてが少なくとも1つのクラスを持っています。各クラスは、独自のコンテンツを持つ1つのdiv IDに対応しています。私がしようとしているのは、ボタン上にある各クラスを取得し、同じ名前を持つdiv IDを見つけ出し、クローンして#return divに追加します。これらのクラスに一致するすべてのIDをクローンする方法
ボタンに表示される最初のクラス名のみを複製する作業例があります。どのように私のjQueryボタンのクラスに一致するすべてのdivのIDを見つけることができます、クローンを作成し、それらを#returnに追加しますか?
これらのボタンは同じクラスにすることができますが、#returnでクローンを作成するときには、再びクローンする必要はありません。私はこれを防止しようとするif文を持っていますが、それはそれらを削除してしまいます。どうすればこれをやめることができますか?
私はこのjqueryの作業を示しているここfiddleを持っている:
$(document).ready(function() {
$("[id^=button]").click(function() {
var myclass = $(this).attr("class").split(" ");
if ($(this).is(".a1,.a2,.a3")) {
$("div#" + myclass).first().clone().appendTo("#return");
}
if ($("#return div#" + myclass).length > 1) {
$("#return div#" + myclass + ":last").remove();
}
});
});
ことの一つは、あなたが要素のクローンを作成するとき、それはそのクローンと同じIDを持っているということです。 IDはドキュメント内で一意でなければならないので、 'div#a1:last'のようなものは' div#a1'と同じです。 'div#a1'も冗長であることに注意してください。なぜなら'#a1'はその要素が 'div'かどうかにかかわらず、IDが 'a1'の要素を一意に識別するためです。 –
これは使用中に問題を起こすでしょうか? div#a1を削除すると、現在ページにあるものはすべて削除されますが、div#returnをターゲットにして削除すると、すでにdiv#a1が削除され、appendTo #returnが削除されます。 – cgrouge
IDはドキュメント内で一意である必要があります。言い換えれば、ドキュメントに複数の 'div#a1'がある場合、それは無効なドキュメントであり、今後は他にもいくつかの問題があります。 –