Я нажимаю на ссылку "a", и страница перенаправляется в какой-либо домен. теперь я написал некоторую функцию в теге "a", который использует "e.preventDefault()". Я сохраняю целевую безопасность в другой переменной, используя "var temp = e.target;"
но когда я пытаюсь снова выстрелить, он не стреляет без ошибки js.
вот код: -
var allowedReload = false;
var reloadTargetControl = null;
$('a').click(function (e) {
debugger;
if (allowedReload == undefined || allowedReload == false) {
reloadTargetControl = e.target;
e.preventDefault();
pageLeaveConfirmBox(); /*this function is creating custom confirm box with Yes/No button*/
/******* Custom confirm box - yes button code *******/
$("#popUpBtnYes").click(function () {
debugger;
allowedReload = true;
$(reloadTargetControl).click(); /*this step is executing the same script again but nothing is happening, can any one explain it why? */
});
}
});
для запуска события вручную вы должны использовать функцию триггера:
$(reloadTargetControl).trigger('click');
Помимо этого вы можете улучшить свой код, изменив:
if (allowedReload == undefined || allowedReload == false)
в
if (allowedReload === undefined || !allowedReload)
В вашей функции щелчка #popUpBtnYes вы устанавливаете allowedReload
в true, но где else
часть вашего условного allowedReload
, которая будет обрабатывать это истинное условие? Вы отправили событие клика в исходную цель, но не указали какое-либо выражение для обработки измененного состояния. Я думаю, что все, что вам нужно, это else { return true; }
else { return true; }
чтобы это работало.
console.log(reloadTargetControl);
чтобы получить текущее значение reloadTargetControl в else
. В моих тестах это превращается из якорного узла в просто URL. Не совсем уверен, почему это происходит, но, кажется, вы могли бы работать с ним (window.location = ....) jsfiddle.net/V2Lyx