Javascript $(this)vs jquery中的e.target或event.target

Javascript $(this)vs jquery中的e.target或event.target,javascript,jquery,Javascript,Jquery,何时使用$(this)和e.target 我对$(this)没有混淆,但e.target对我来说是混淆的,因为它可以执行与$(this)相同的操作。(或者我错了?) vs 如果您单击事件装配到的元素,它们将是相同的。但是,如果您单击一个子元素并使其冒泡,则this引用此处理程序绑定到的元素,e.target仍然引用事件发生的元素。e.target属性可以是注册事件的元素,也可以是该元素的后代。您可以将其与$(this)进行比较,以确定事件委派是否由于事件冒泡而发生。该元素的后代?为什么?所以你想

何时使用$(this)和e.target

我对$(this)没有混淆,但e.target对我来说是混淆的,因为它可以执行与$(this)相同的操作。(或者我错了?)

vs


如果您单击事件装配到的元素,它们将是相同的。但是,如果您单击一个子元素并使其冒泡,则
this
引用此处理程序绑定到的元素,
e.target
仍然引用事件发生的元素。

e.target属性可以是注册事件的元素,也可以是该元素的后代。您可以将其与$(this)进行比较,以确定事件委派是否由于事件冒泡而发生。

该元素的后代?为什么?所以你想说e.target更好,因为它可以防止事件冒泡问题?不,我不是说一个比另一个好…你可以使用e.target来获取触发事件的子对象。如果要停止事件冒泡,则必须调用e.stopPropagation(),您的示例不会显示您是否使用任何子元素,因此假设它只是一个没有子元素的元素,e.target和$(this)都将指向触发事件的同一个元素。实际上,“更好”和“更差”,但“在某些情况下会有所不同”。您可以使用javascript检测到这一点:
e.target==this
或更旧的,即
e.srcElement?e.srcElement==this:e.target==this
$(document).on('click',"div", function(){
        $(this).css('color', 'red');
    }
});
$(document).on('click',"div", function(e){
        $(e.target).css('color', 'red');
    }
});