繁体   English   中英

jQuery .on('click,'button'无效

[英]Jquery .on('click,'button' not working

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM