0

私はこのような単純なコードを持っていますhttp://jsfiddle.net/9braK/2/

$(function(){

$('body').append(
    $("<a/>").attr({ "id": "foo", "href":"#" })
             .text("click me")
             .live("click",function(e){
                e.preventDefault();
                alert("Hello World!");
             })
  );
});

ドキュメントによると、これはうまくいくはずですよね?

4

2 に答える 2

2

DOMトラバーサルメソッドは、.live()に送信する要素を見つけるためにサポートされていません。むしろ、上記の例のように、.live()メソッドは常にセレクターの直後に呼び出す必要があります。

ソース

したがって、コードの唯一の問題は、の使用法ですlive()"<a/>"はセレクターではなく、live()機能する方法では、対応する要素を見つけることができません。単に使用すれば.click()、もちろん問題なく動作します。

あなたは次のようなものを使うことができます

$('body')
  .append(
    $("<a/>")
      .attr({ "id": "foo", "href":"#" })
      .text("click me")
    )
  )
  .delegate("#foo", "click", function(e){
                e.preventDefault();
                alert("Hello World!");
             });

click()目的を達成するために(ただし、ユースケースによっては単純なもので十分だと思います)。

于 2011-04-18T10:28:51.613 に答える
0

これは機能します:

$(function(){
  // Add the click event for all future elements having the id #foo
  $('#foo').live("click",function(e){
                    e.preventDefault();
                    alert("Hello World!");
                 });

    $('body').append(
        $("<a/>").attr({ "id": "foo", "href":"#" })
                 .text("Continue ")
    );
});
于 2011-04-18T10:21:11.663 に答える