event.target
和this
之间的区别是什么?
假设我有
$("test").click(function(e) {
$thisEventOb = e.target;
$this = this;
alert($thisEventObj);
alert($this);
});
我知道警报会弹出不同的值。有人可以解释这个区别吗?万分感谢。
答案 0 :(得分:18)
如果您点击事件被绑定的元素,它们将是相同的。但是,如果单击子项并且它出现气泡,则this
引用此处理程序绑定的元素,e.target
仍然引用事件源自的元素
您可以在此处看到差异:http://jsfiddle.net/qPwu3/1/
给出这个标记:
<style type="text/css">div { width: 200px; height: 100px; background: #AAAAAA; }</style>
<div>
<input type="text" />
</div>
如果你有这个:
$("div").click(function(e){
alert(e.target);
alert(this);
});
单击<input>
会提醒输入,然后是div,因为输入发起了事件,div在冒泡时处理它。但是如果你有这个:
$("input").click(function(e){
alert(e.target);
alert(this);
});
它总是会警告输入两次,因为它既是事件的原始元素,也是处理事件的原始元素。
答案 1 :(得分:2)
事件可以附加到任何元素。但是,它们也适用于所述对象中的任何元素。
this
是事件绑定的元素。 e.target
是实际点击的元素。
例如:
<div>
<p>
<strong><span>click me</span></strong>
</p>
</div>
<script>$("div").click(function(e) {
// If you click the text "click me":
// e.target will be the span
// this will be the div
}); </script>