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

Jquery .on('click,'button' not working

本文关键字:按钮 工作 单击 on Jquery      更新时间:2023-09-26

我需要检查用户是否关闭了浏览器。没有可靠的方法,但最准确的方法似乎是使用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

该变量在加载前不存在。所以将其添加到顶部,然后重试

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

由于您还没有提供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()
    });
});