Jquery .on('点击,'按钮'不工作

时间:2014-04-10 12:24:33

标签: javascript jquery

我需要检查用户是否关闭浏览器。没有可靠的方法,但最准确的方法似乎是使用onbeforeunload并检查是否点击了链接或按钮。我还将添加f5和其他一些额外的检查。

但我有按钮问题。如果我单击按钮,即使存在if(window.link_was_clicked==false)条件,也会进行ajax调用。

<button onclick="setLocation('http://dev.site.com/checkout/')" class="button" title="Checkout" type="button"><span><span>Checkout</span></span></button>

脚本:

jQuery(document).on('click', 'button', function(event) {
  window.link_was_clicked= true;
});  

window.onbeforeunload = function() {
  if(window.link_was_clicked==false){                
    //make ajax call      
  }
};

似乎问题是因为按钮onclick附加了setLocation函数。有没有办法先触发jQuery(document).on

2 个答案:

答案 0 :(得分:0)

加载前该变量不存在。所以将它添加到顶部并再试一次

     window.link_was_clicked=window.link_was_clicked||false;
     jQuery(document).on('click', 'button', function(event) {
         window.link_was_clicked= true;
      });  

     window.onbeforeunload = function() {
         if(window.link_was_clicked==false){                
        //make ajax call      
     }
    };

答案 1 :(得分:0)

由于您尚未提供setLocation()的代码,我将假设问题出在那里。现在,关于点击事件处理程序的执行顺序的更改:

一般来说,嵌入式onclick和jquery绑定处理程序都很糟糕,它会导致各种混淆。但是,如果您无法更改html,则可以执行此人建议的操作:https://stackoverflow.com/a/7507888/2685386

$(document).ready(function() {
    var myClick = $('button').attr('onclick');
    $('button').removeAttr('onclick');

    $(document).on('click', 'button', function(e) {
        window.link_was_clicked=true;
        // do my other stuff here....
        eval(myClick);// this will now call setLocation()
    });
});