0

.click()ページ上のリンクで発生するすべてのイベントをキャッチしたいと思います。また、現在クリックされているリンクの属性を読みたい。私がこれを持っている限り、それには問題があります:

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

まず、このコードは2回のうち1回しか機能しません。最初にリンクをクリックすると、このコードは機能しません。2回目のクリック、このコードは機能します。3回目のクリック、機能しません。それはなぜですか。また、リンクの属性を読み取るにはどうすればよいですか?src属性とclass属性を読み取る必要があります。

編集:私がする必要があるのは、誰かがリンクをクリックするたびにキャッチし、それが起こらないようにし、リンクのhref属性とクラス属性を読んでから、ページの読み込みを続行することです(ただし、再読み込みではなく、#myPageを置き換えるだけです)

Edit2:さて、今のところ唯一の問題は、なぜそれが私にとって2回に1回機能するのかということです。ページを読み込んでからリンクをクリックすると、jqueryは正常に機能しますが、2回目のクリックの後、$("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()ハンドラーは2回起動される可能性があります。マウスダウン用に1回、マウスアップ用に1回。おそらく、$。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 に答える