Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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
Javascript 事件上的Jquery未绑定不存在的元素_Javascript_Jquery_Event Delegation - Fatal编程技术网

Javascript 事件上的Jquery未绑定不存在的元素

Javascript 事件上的Jquery未绑定不存在的元素,javascript,jquery,event-delegation,Javascript,Jquery,Event Delegation,好的,这里是JSFIDLE示例 正如您在悬停时看到的,它不是触发鼠标悬停事件 我怎样才能解决这个问题 我正在使用jQuery1.9 <div id='superdiv'>Click Me</div> $(function () { $('#superdiv').on('click', function (event) { $('body').append('<div id="super">another'); });

好的,这里是JSFIDLE示例

正如您在悬停时看到的,它不是触发鼠标悬停事件

我怎样才能解决这个问题

我正在使用jQuery1.9

<div id='superdiv'>Click Me</div>


$(function () {
    $('#superdiv').on('click', function (event) {
        $('body').append('<div id="super">another');
    });
    $('#super').on('mouseover', function (event) {
        alert('not working');
    });
});
点击我
$(函数(){
$('#superdiv')。在('click',函数(事件){
$('body')。追加('other');
});
$('#super')。on('mouseover',函数(事件){
警报(“不工作”);
});
});

javascript

要在单击时创建的div没有使用“
”标记关闭

如果您尝试以下代码会怎么样:

$(function () {
    $('#superdiv').on('click', function (event) {
        $('body').append(
            $('<div/>',{ 'id' : 'super', 'text' : 'tetet'}).mouseover(function(event) { 
                    alert('test'); 
            })
        );
    });
});
$(函数(){
$('#superdiv')。在('click',函数(事件){
$('body')。追加(
$(“”,{id':'super',text':'teteet'}).mouseover(函数(事件){
警报(“测试”);
})
);
});
});
您必须像这样使用“委托”(以提供“实时”)
$('body')。在('mouseover','#super',function(event){

上,您还可以将鼠标悬停事件包装到函数中,并在添加希望受影响的新元素时调用它。 这样WickyNilliams指出的问题不会影响你

$(function () { 
    $('#superdiv').on('click', function (event) { 
        $('body').append('<div id="super">another');
        mouse();
    }); 
    function mouse () {
        $('#super').on('mouseover', function (event) { 
            alert('not working'); 
        }); 
    });
    mouse();
}
$(函数(){
$('#superdiv')。在('click',函数(事件){
$('body')。追加('other');
鼠标();
}); 
功能鼠标(){
$('#super')。在('mouseover',函数(事件){
警报(“不工作”);
}); 
});
鼠标();
}

虽然这是正确的,但请不要开始将所有事件处理程序附加到正文中。事件委派的工作原理是捕获每个冒泡的事件,然后检查源元素是否与感兴趣的元素匹配(
#super
此处)。因此,每次将鼠标悬停在页面上的任何内容上时,您都会受到一次点击,以检查该元素是否匹配。将您的委托尽可能地放在源的本地位置,您将获得更好的性能,而不是每次都粘在主体上。这是绝对正确的,仅在本示例中显示委托。