使用jQuery在链接上重新触发click事件

时间:2009-11-19 11:38:31

标签: asp.net javascript jquery jquery-ui event-handling

我有一个页面(asp.net),我在其中捕获链接的click事件。 然后我做一些脏检查并向用户提供一个对话框,

$(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;
}

返回true但事件永远不会发生....

我需要再次手动点击该链接才能触发。

任何想法??

2 个答案:

答案 0 :(得分:1)

.click()仅触发onclick的事件处理程序,它实际上并未实现跟随链接的默认操作。可能最快的方法就是手动完成:

window.location= clickedLink.href;

PS。 “输”

答案 1 :(得分:-3)

您可以使用trigger function,更改:

$(clickedLink).click();

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

更好的方法是将您的点击功能分成一个单独的功能并调用它,但上述方法可以正常工作。