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.target是对 DOM 节点的引用。 $(event.target)是一个包裹 DOM 节点的 jQuery 对象,它可以让你使用 jQuery 的魔法来查询操作 DOM。

换句话说,您可以这样做:

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

但你不能这样做:

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

在第一种情况下,本地变量$tgt将保存 jQuery 元素(包裹在 DOM 元素周围),在第二种情况下,它将保存 DOM 元素。

您不能直接在 DOM 元素上使用 jQuery 操作方法(例如.val()),因此如果您想这样做,您需要先将其转换为 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 回答