これを試して。オブジェクトが存在しない場合、これによりオブジェクトがセットアップされます。その後、それが行われると、それは将来のクリックのためにそれを切り替えます。
$(function() {
$("#nav a").click(function() {
$(this).toggleClass('added');
if($(".o1").length <= 0)
{
$("body").append('<div class="o1"></div>');
$(".o1").load("me.html");
} else if($(this).hasClass("added"))
$(".o1").hide();
} else {
$(".o1").show();
}
});
});
click
コード内のすべてのリンクにハンドラーを追加する.added
と、問題が発生します。
これは、何が起こっているかのタイムラインを示しています。あなたがフォローできることを願っています。括弧内の数字はイベントです。同じ番号は、それらが同時に発生することを意味します。
(1)#nav a
がクリックされ、次にクラス #nav a
が追加され、クラスを持つリンクがクリックイベントを取得しますadded
.o1
added
(2)#nav a
クリックしてから #nav a
クラスを削除し、そのクラスがadded
すでに .o1
存在している場合、クラスを持つリンクはクリックadded
イベントを取得します(ただし、このリンクは削除されていないため、以前のクリックイベントが残っています)。
(2).added
は、(1)の間に添付されたため、上記のアクションと同時にクリックされたと見なされます。
(3)#nav a
がクリックされ、次に #nav a
クラスが存在し、クラスを持つリンクがadded
クリック イベントを取得します.o1
added
(3).added
は、(1)の間に添付されたため、上記のアクションと同時にクリックされたと見なされます。
(4)#nav a
がクリックされた後 #nav a
、クラスを取得し、added
すでに .o1
存在している場合、クラスを持つリンクはクリックadded
イベントを取得します
(4).added
は、(1)の間にアタッチされたため、上記のアクションと同時に.added
クリックされたと見なされます。(4)は、(3)の間にアタッチされたため、上記のアクションと同時にクリックされたと見なされます。
など..。
把握する重要なことはclick
、イベントを切り離すのではなく、ますますアタッチすることです。