остановка и запуск события в JavaScript

0

Я нажимаю на ссылку "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? */
    });
} 
});
Теги:
javascript-events
popup
confirm

2 ответа

1

для запуска события вручную вы должны использовать функцию триггера:

$(reloadTargetControl).trigger('click');

Помимо этого вы можете улучшить свой код, изменив:

if (allowedReload == undefined || allowedReload == false)

в

if (allowedReload === undefined || !allowedReload)
  • 0
    Извините, код не работал :( Я изменил несколько строк: - var reloadTargetHref = e.target.href; window.location = reloadTargetHref; / * это работает вместо $ (reloadTargetControl) .trigger ('click'); * /
  • 0
    @GaganDeepSharma: лучший способ позволить нам помочь вам исправить это - создать пример jsfiddle вашего кода.
0

В вашей функции щелчка #popUpBtnYes вы устанавливаете allowedReload в true, но где else часть вашего условного allowedReload, которая будет обрабатывать это истинное условие? Вы отправили событие клика в исходную цель, но не указали какое-либо выражение для обработки измененного состояния. Я думаю, что все, что вам нужно, это else { return true; } else { return true; } чтобы это работало.

  • 0
    else {return true; } не работает уже проверено.
  • 0
    Попробуйте использовать console.log(reloadTargetControl); чтобы получить текущее значение reloadTargetControl в else . В моих тестах это превращается из якорного узла в просто URL. Не совсем уверен, почему это происходит, но, кажется, вы могли бы работать с ним (window.location = ....) jsfiddle.net/V2Lyx
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню