Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么这个jq事件响应代码不起作用?_Jquery_Html_Events - Fatal编程技术网

Jquery 为什么这个jq事件响应代码不起作用?

Jquery 为什么这个jq事件响应代码不起作用?,jquery,html,events,Jquery,Html,Events,我正在尝试为最初加载的“link”类div以及用户稍后将在“linksPanelHdr”div中添加的任何其他类设置单击事件注册。我已经研究了现有SO关于如何执行此操作的答案,但我必须缺少一些基本内容 使用此html: <div class="linksPanelHdr"> <div id="171" class="link"> <span class="delButt">Delete Link</span>

我正在尝试为最初加载的“link”类div以及用户稍后将在“linksPanelHdr”div中添加的任何其他类设置单击事件注册。我已经研究了现有SO关于如何执行此操作的答案,但我必须缺少一些基本内容

使用此html:

<div class="linksPanelHdr">
    <div id="171" class="link">
        <span class="delButt">Delete Link</span>
        <span class="openButt">Open Link</span>    
    </div>
</div>
据我所知,当单击dom中任何“linksPanelHdr”类元素的后代的任何“delButt”类元素时,这个jq应该触发警报。但是Firefox Inspector显示,无论是在初始加载中还是在动态添加的链接中,事件都没有注册。当然,点击事件无法触发


如果我将.delButt选择器替换为'null',当我在'linksPanelHdr'分区内单击时,事件将触发。有人能告诉我哪里出错了吗?提前谢谢

在发布之前,我又读了一些书。Esp我重读了SO:

在那里,我在示例中注意到:

$(staticFounders).on(eventName,dynamicChild,function(){})

我使用非静态祖先作为第一个选择器。i、 我试图在树上的一个div上注册这个事件,这个div可以被动态添加。我不知道jq怎么会知道这一点,但无论如何这解决了问题

现在我看到主选择器应该是树上包含特定(动态)选择器目标的第一个元素。我相信你想把第一个静态元素放在树上,以尽量减少冒泡时间——所以不要只提到“body”,因为它总是静态的。希望这能为其他人节省一些时间,他们可能会遇到我完全错过的同样情况

$(".linksPanelHdr").on("click",".delButt",function(){ 
    alert("Triggered by link"+$(this).parent().attr('id'));
});