【问题标题】:Stopping and firing an event in JavaScript在 JavaScript 中停止和触发事件
【发布时间】:2014-04-28 17:34:13
【问题描述】:

我点击了一个“a”标签,页面正在重定向到某个域。现在我已经在使用e.preventDefault() 的“a”标签单击上编写了一些函数。我使用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 jquery popup jquery-events confirm


    【解决方案1】:

    要手动触发事件,您应该使用触发功能:

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

    除此之外,您可以通过更改来改进您的代码:

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

    if (allowedReload === undefined || !allowedReload)
    

    【讨论】:

    • 抱歉代码没用 :( 我已经改了几行 :- var reloadTargetHref = e.target.href; window.location = reloadTargetHref; /*这可以代替 $(reloadTargetControl).trigger ('点击'); */
    • @GaganDeepSharma:让我们帮助您修复它的最佳方法是为您的代码创建一个 jsfiddle 示例。
    【解决方案2】:

    在您的#popUpBtnYes 点击函数中,您将allowedReload 设置为真,但是您的条件中可以处理该真条件的else 部分在哪里?您已向原始目标发送了单击事件,但未提供任何表达式来处理更改的状态。我想你只需要else { return true; } 就可以了。

    【讨论】:

    • 尝试使用console.log(reloadTargetControl);获取else中reloadTargetControl的当前值。在我的测试中,它从锚节点变成了 URL。不太清楚为什么会发生这种情况,但似乎你可以使用它(window.location=....)jsfiddle.net/V2Lyx
    • 适用于 window.location = e.target.href;但我还需要为提交按钮触发相同的代码,在这种情况下 window.location 将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2014-12-28
    • 2011-01-22
    相关资源
    最近更新 更多