捕获没有绑定事件的单击事件

时间:2013-12-07 12:34:03

标签: jquery events hyperlink bind

我想截取我网页上的某些链接点击,并通过ajax调用它们,以防止默认操作。

我遇到了这个问题:我无法进行绑定,因为很多链接不断加载到页面,所以我必须运行$('a')。bind('click')all时间 - 每个ajax负载。而且我不能在所有链接上放置'onclick'功能,因为重构所有布局需要花费太多时间。

是否可以设置一个全局侦听器,它将捕获Click事件并查看是否单击了'a'元素?

我认为可以通过Onbeforeunload窗口对象进行操作,如下所示:

window.onbeforeunload = function(){

 //here shold be some function that detects original event name ('click') and element that was clicked, so I could make an ajax call on that url instead of going to that url

};

我可以捕获事件名称以及浏览器所在位置的路径名称更重要吗?

2 个答案:

答案 0 :(得分:2)

您需要使用以下内容:

$(document).ready(function() {
    $(document).on("click", "a", function(event) {
        //Do something
    });
});

这会绑定'当a发生时,您在所有click元素上的功能 这也确保它适用于目前为止创建的元素以及将来创建的元素。

更多信息:http://api.jquery.com/on/

更新:另外,为了防止默认操作,请使用:

event.preventDefault();

答案 1 :(得分:0)

从现在开始,jquery的.on()方法应该是首选。

其他选项是.bind(),. delegate()和现已弃用的.live()方法。

.on()方法及其对应的.bind(),. live()和.delegate()如下:

$( "#members li a" ).on( "click", function( e ) {} );  
$( "#members li a" ).bind( "click", function( e ) {} ); 

// Live

$( document ).on( "click", "#members li a", function( e ) {} );  
$( "#members li a" ).live( "click", function( e ) {} );

//委派

$( "#members" ).on( "click", "li a", function( e ) {} );  
$( "#members" ).delegate( "li a", "click", function( e ) {} );