3

私はこのhtmlを持っています:

<ul id="list1" class="eventlist">
  <li>plain</li>
  <li class="special">special <button>I am special</button></li>
  <li>plain</li>
</ul>

そして、私はこのjqueryコードを持っています:

$('#list1 li.special button').click(function(event) {

  var $newLi = $('<li class="special"><button>I am new</button></li>');
  var $tgt = $(event.target);
});

私の質問は、違いは何ですか

var $tgt = $(event.target);

var $tgt = event.target;
4

3 に答える 3

11

event.targetDOM ノードへの参照です。 $(event.target)は、DOM ノードをラップする jQuery オブジェクトです。これにより、jQuery の魔法を使用して DOM をクエリ操作できます。

言い換えれば、これを行うことができます:

$(event.target).addClass('myClass');

しかし、あなたはこれを行うことはできません:

event.tagert.addClass('myClass');
于 2009-11-09T17:00:10.157 に答える
5

最初のケースでは、ローカル変数$tgtは jQuery 要素 (DOM 要素をラップしたもの) を保持し、2 番目のケースでは DOM 要素を保持します。

jQuery 操作メソッド ( など.val()) を DOM 要素で直接使用することはできないため、そうする場合は、最初に jQuery 要素に変換する必要があります。

于 2009-11-09T16:57:42.140 に答える
2

$(this)要素を取得するために使用することをお勧めします。jQuery はこれを内部的に行うため、次のことを行う必要はありません。

$('#list1 li.special button').click(function() {
    var $tgt = $(this);
});

あなたの質問に答えるには: $(event.target)jQuery で拡張されますが、拡張されevent.targetません。

于 2009-11-09T17:00:58.250 に答える