よし、これで取り引きだ。この init 関数を 1 回呼び出しています。それは関数を実行し、私の region.prototype.load(); も起動します。そして私の region.prototype.edit(); 一度機能します。init 関数の途中で、クリックとタッチスタートのイベントを .myElement にバインドしています
ただし、ここに問題があります。$ths は、region.prototype.edit() の値を持つと定義されていません。最初に関数をロードするとき。$ths は、.myElement をクリックするまで定義されません。しかし、$ths を別の関数に渡す必要があります。しかし、 region.prototype.edit(); を入れることはできません。ドキュメント レベルでイベントを HTML 要素にバインドしているため、クリック イベント内で .myElement をクリックするたびに別のクリック イベントが要素に関連付けられ、基本的に再帰が発生します。したがって、1 回のクリックごとに、3 つ以上のイベントが発生します。
region.prototype.edit() が 1 回だけ起動し、.myElement をクリックして $ths を定義した後に 1 回だけ起動するように設定するにはどうすればよいですか?
region.prototype.init = function() {
region.prototype.load();
var chfTxt;
var $ths;
$(document).on("click", ".myElement", function (e, $ths) {
e.stopPropagation();
$ths = $(this);
$ths.each(function () {
var options = {
splitScreen: true,
titleTxt: "Test"
}
$ths.openPopUp(options);
if ($ths.data("x") == "yes") {
chfTxt = $ths.text();
$('#thing').text(chfTxt);
$('#thing2').addClass("selected");
} else if($ths.data("y") == "yes") {
$('#thing3').addClass("selected");
}
});
return $ths;
});
region.prototype.edit(compPages, chfTxt, $ths);
}