gpt4 book ai didi

javascript - 为什么来电每次都翻倍?

转载 作者:行者123 更新时间:2023-11-29 19:14:54 25 4
gpt4 key购买 nike

此处显示:JS Fiddle

这是我们关心的代码:

    doit1();

function doit2(){
$("#evtTarget").on("click", function(evt) {
$("#evtTarget").addClass("highlighted");
$("#evtTarget").on("mouseover mouseleave", highlight);
$("#evtTarget").html("<p>You Turned on the hover effect!</p>");
doit1();
});}

function doit1(){
$("#evtTarget").on("click", function(evt) {
$("#evtTarget").off("mouseover mouseleave", highlight);
$("#evtTarget").html("<p>You shut off the hover effect!</p>");
$("#evtTarget").removeClass("highlighted");
console.log("check");
doit2();
});}

关于这段代码,我无法弄明白,它来回调用并且每次都加倍调用。这最终会破坏页面。为什么会这样,我该如何做得更好?

最佳答案

您的代码有点“可重入”...您只需设置一次onClick...

尝试:

$(function() {
turnItOn();

$("#evtTarget").on("click", function(evt) {
if ($("#evtTarget").hasClass("highlighted")) {
turnItOff();
} else {
turnItOn();
}
});
});
function turnItOn() {
$("#evtTarget").addClass("highlighted");
$("#evtTarget").on("mouseover mouseleave", highlight);
$("#evtTarget").html("<p>You Turned on the hover effect!</p>");
}

function turnItOff() {
$("#evtTarget").off("mouseover mouseleave", highlight);
$("#evtTarget").html("<p>You shut off the hover effect!</p>");
$("#evtTarget").removeClass("highlighted");
}

function highlight(evt) {
$("#evtTarget").toggleClass("highlighted");
}

正如在这个版本的 fiddle 中看到的:

https://jsfiddle.net/pnz9eooz

或者像我写这篇文章时 Alon 建议的那样关闭事件 :)

关于javascript - 为什么来电每次都翻倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com