Javascript 为什么jquery中的event.target不工作

Javascript 为什么jquery中的event.target不工作,javascript,jquery,function,event-handling,Javascript,Jquery,Function,Event Handling,下面是代码,我正在尝试放置。这非常简单,但是event.target不会触发,而其他普通事件处理程序可以工作 $(函数($){ var container=$(“#container”); 函数init(){ 容器。打开('单击',打开) } 函数open(){ if(event.target==容器){ 警报(“hi”); } } init(); })(jQuery) body,html{ 填充:0; 保证金:0; } #容器{ 高度:500px; 宽度:800px; 保证金:0自动;

下面是代码,我正在尝试放置。这非常简单,但是event.target不会触发,而其他普通事件处理程序可以工作

$(函数($){
var container=$(“#container”);
函数init(){
容器。打开('单击',打开)
}
函数open(){
if(event.target==容器){
警报(“hi”);
}  
}
init();
})(jQuery)
body,html{
填充:0;
保证金:0;
}
#容器{
高度:500px;
宽度:800px;
保证金:0自动;
背景色:#444;
}
h1{
颜色:白色;
}

测试
  • 这两个值在javascript中引用的对象引用不相同
    $(“#容器”)
    是一个jQuery对象,要获取HTML DOM对象,需要检索jQuery对象中的第0个元素。而
    event.Target
    返回HTMLDOM元素。您试图做的是比较不同的对象,因此该条件永远不会通过

    $(“#container”)
    是一个ID选择器,可以返回多个匹配元素(HTML中多个元素的ID相同),因此需要获取Jquery对象返回的第0个元素。Jquery对象是HTML元素的包装器,包括附加属性和方法

  • $(函数($){
    中删除
    $
    ,它基本上是一种IIFE模式
  • 因此,您需要修改代码,如下所述

    (函数($){
    var container=$(“#container”);
    函数init(){
    容器。打开('单击',打开)
    }
    函数open(){
    if(event.target==容器[0]){
    警报(“hi”);
    }  
    }
    init();
    })(jQuery);
    <代码>正文,html{ 填充:0; 保证金:0; } #容器{ 高度:500px; 宽度:800px; 保证金:0自动; 背景色:#444; } h1{ 颜色:白色; }
    
    测试
    
    谢谢它能工作。但我的困惑是容器没有索引元素。那么为什么需要容器[0]索引呢。@jeff,在回答中添加了更多细节。