我想截取我网页上的某些链接点击,并通过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
};
我可以捕获事件名称以及浏览器所在位置的路径名称更重要吗?
答案 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 ) {} );