Ваша проблема вызвана всплыванием , вот объяснение, взятое из ранее связанной статьи:
"Когда событие происходит с элементом, сначала запускаются обработчикина нем, потом на его родителе, а затем и на других предках. "
Так что при нажатии на элемент это событие сработает на всех родительских элементах, включая сам документ. Как только вы поймете это, проблема с вашим кодом должна стать очевидной. При добавлении документа вы добавляете событие, которое впоследствии создает щелчок по «кнопке», который всплывает в документе и запускает обратный вызов по щелчку, который снова вызывает щелчок по кнопке в бесконечном цикле. Это можно увидеть, добавив console.log('clicked'); return;
перед вызовом .click()
$(function() {
var flg = "on";
$(document).click(function() {
console.log('I bubbled!');
// Prevent the click running, stopping the infinite loop
return;
if(flg == "on"){
$(".button-toggle").click();
}
flg = "off";
});
});
Чтобы обойти всплывающее окно, вы должны отделить функциональность щелчка от щелчка, например, написав close
функция и вызов этого, вместо того, чтобы вызвать щелчок на самой кнопке закрытия.