0

我想捕捉.click()我页面上链接上发生的所有事件。另外,我想读取当前单击的链接的属性。据我所知,但它有一个问题:

$("a").click(function (e) {
    e.preventDefault();
    $("#myPage").load("/ #myPage");
});

首先,这段代码只工作了两次——第一次我点击一个链接,这个代码不起作用,第二次点击,这个代码工作,第三次点击,没有,等等。这是为什么?另外,如何读取链接的属性?我需要阅读 src 和类属性。

编辑:我需要做的是捕捉任何人点击链接,阻止这种情况发生,读取链接的 href 和类属性,然后继续加载页面(但不重新加载,只是替换#myPage)

Edit2:好的,所以现在唯一的问题是,为什么它对我来说是二分之一?当我加载页面,然后单击一个链接时,jquery 工作正常,但是在第二次单击后,它没有命中我的$("a").click()事件!

解决方案:我通过将 .click() 替换为 .live() 解决了我的问题 - 现在每次都有效。;)

4

3 回答 3

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

看到这个小提琴

于 2013-03-25T20:38:32.463 回答
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
});
于 2013-03-25T20:42:32.370 回答
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");
});
于 2013-03-25T20:44:07.240 回答