好的,这就是交易。我调用了这个初始化函数一次。它贯穿该函数,它还触发了我的 region.prototype.load(); 和我的 region.prototype.edit(); 功能一次。在 init 函数的中间,我将 click 和 touchstart 事件绑定到 .myElement
这是问题所在。$ths 未定义为具有 region.prototype.edit() 的值;当它第一次加载函数时。在您单击 .myElement 之前,不会定义 $ths。但我需要将 $ths 传递给另一个函数。但我不能放 region.prototype.edit(); 在单击事件内部,因为它在文档级别将事件绑定到 HTML 元素,如果我这样做,那么每次单击 .myElement 时,都会将另一个单击事件附加到元素上,它基本上会导致递归。因此,每单击一次,我就会触发 3 个或更多事件。
我如何设置它以便我的 region.prototype.edit() 只触发一次,并且在我单击 .myElement 并定义 $ths 后它只触发一次?
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);
}