我想要捕获页面上链接上发生的所有.click()
个事件。另外,我想读取当前点击的链接的属性。到目前为止,我有这个,但它有一个问题:
$("a").click(function (e) {
e.preventDefault();
$("#myPage").load("/ #myPage");
});
首先,这段代码只能工作两次 - 第一次点击链接,这段代码不起作用,第二次点击,这段代码有效,第三次点击,没有等等。为什么是那?另外,我如何读取链接的属性?我需要读取src和class属性。
编辑我需要做的是,只要有人点击某个链接,停止发生这种情况,读取链接的href和类属性,然后继续加载页面(但没有重新加载,只是替换#myPage)
编辑2:好的,现在唯一的问题是,为什么它会为我工作两次?当我加载页面,然后单击一个链接,jquery工作正常,但在第二次点击后,它没有击中我的$("a").click()
事件!
解决方案:我通过将.click()替换为.live()来解决我的问题 - 现在每次都可以使用。 ;)
答案 0 :(得分:3)
第一部分:How can I prevent link click:
从您的点击事件中返回false
$("a").click(function(e) { return false; });
第二部分:how can I read attribute of a link
$("a").click(function(){
var href= $(this).attr('href');
alert(href);
return false;
});
请参阅此fiddle
答案 1 :(得分:1)
$("a").on('click', function(e) {
// stop click event
e.preventDefault();
// get href attribute of currently clicked item
var hrefAttr = $(this).attr('href');
// get class attribute
var classAttr = $(this).attr('class');
// do loading here
});
答案 2 :(得分:1)
根据http://api.jquery.com/click/,click()处理程序可能被触发两次。一次用于mousedown,一次用于mouseup。也许你可以使用$ .on('mouseup',function(e){});代替?
对于您可以使用的属性:
$('a').attr('src');
总结:
$("a").on('mouseup', function (e) {
e.preventDefault();
var src = $(this).attr('src');
$("#myPage").load("/#myPage");
});