повторное срабатывание события щелчка по ссылке с помощью jQuery - PullRequest
2 голосов
/ 19 ноября 2009

У меня есть страница (asp.net), где я перехватываю событие щелчка по ссылке. Затем я делаю некоторую грязную проверку и представляю диалоговое окно пользователю,

$(function() {
    var clickedLink;

    $('.checkdirty').click(function(event) { 
         if(isDirty == false){
              return true;
          }
          clickedLink = $(this);
          $('#dirtysave-dialog').dialog('open');
          return false;
    }); 

});

хотите ли вы потерять изменения Да / Нет и т. Д.

$('#dirtysave-dialog').dialog({ bgiframe: true, autoOpen: false, 
                                    height: 125, width: 425, modal: true,
                     title: "You have unsaved changes, do you want to continue and loose changes?!!",
                     buttons: {
                     "Yes": function() {
                         isDirty = false;
                         $(this).dialog("close"); 
                         $(clickedLink).click();
                     },
                     "No": function() { 
                         $(this).dialog("close"); 
                     }
                },
                open: function(type, data) {
                    $(this).parent().appendTo("form");
                }
        }); 

если они нажмут да, тогда я уберу флаг isDirty и нажму на ссылку. это возвращается к обработчику события click, делает проверку

if(isDirty == false){
     return true;
}

возвращает истину, но событие никогда не происходит ....

Мне нужно нажать на ссылку еще раз вручную, чтобы она открылась.

есть идеи ??

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

.click() только запускает обработчики событий для onclick, фактически это не делает действие по умолчанию, следующее за ссылкой. Вероятно, самый быстрый способ - это сделать это вручную:

window.location= clickedLink.href;

PS. «Потерять»

0 голосов
/ 19 ноября 2009

Вы можете использовать функцию запуска , Изменить:

$(clickedLink).click();

до

$(clickedLink).trigger("click");

Лучшим способом было бы разделить вашу функцию щелчка на отдельную функцию и вызвать ее, однако вышеприведенное сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...