Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 是否无法通过编码为已创建的元素创建函数?_Javascript_Jquery - Fatal编程技术网

Javascript 是否无法通过编码为已创建的元素创建函数?

Javascript 是否无法通过编码为已创建的元素创建函数?,javascript,jquery,Javascript,Jquery,这段代码基本上创建了一个div并将其附加到父元素中 var div = document.createElement('div'); div.setAttribute('class', 'asd'); parent.appendChild(div); 这个函数在悬停创建的div时是一个函数,但它不起作用。有解决方案吗?当然,但您需要使用事件委派: $(".asd").hover(function(){ alert("hey");}; 这将事件侦听器应用于DOM加载上存在的某个祖先元素,并且

这段代码基本上创建了一个div并将其附加到父元素中

var div = document.createElement('div');
div.setAttribute('class', 'asd');
parent.appendChild(div);

这个函数在悬停创建的div时是一个函数,但它不起作用。有解决方案吗?

当然,但您需要使用事件委派:

 $(".asd").hover(function(){
alert("hey");};
这将事件侦听器应用于DOM加载上存在的某个祖先元素,并且仅当事件目标是作为第二个参数列出的元素时才运行该函数

此方法允许您随意向页面添加元素,而无需创建新的悬停侦听器。任何类为asd的元素都将附加侦听器

如果性能是一个问题,用DOM加载上可用的任何祖先元素替换文档,以减少侦听器的范围


您忘记了右括号:

$(document).on('mouseenter', '.asd', function() {
    // do stuff here
}).on('mouseleave', '.asd', function() {
    // undo stuff here
});
但实际上,如果要动态添加元素,则应将悬停事件更改为使用mouseover和mouseout的事件,并使用事件委派,以便在事件从事件阶梯上冒泡或调用任何事件时捕获事件:

$(".asd").hover(function(){
 alert("hey");
});
如果您要使用jQuery,我建议您将其用于所有DOM操作。使用document.createElement和jQuery有点奇怪


动态创建的div上的事件委派错误,并且存在括号错误 这样写

$(document).on('mouseover', '.asd', function () {
  console.log('on')
}).on('mouseout', '.asd', function () {
  console.log('off')
});

另外,您可以将创建div留给jquery

$(document).on(hover,"asd"function(){
    alert("hey");
});

请将所有代码放在DOM ready中,或将代码放在页面底部:

注意:对于这个演示,我添加了函数{}作为hover的第二个参数,这样警报就不会出现两次。。。我可以/应该在活动中使用聚焦

$function{ var parent=$”.parent'[0]; var div=document.createElement'div'; div.setAttribute'class','asd'; parent.appendChilddiv; $div.hover函数{ 阿勒泰; },函数{}; }; A.自闭症{ 边框:1px000; 填充:10px; }
我非常怀疑这就是问题所在,除了代码中的输入错误。如果问题中的代码在加载时运行,这将解决问题,是的,我发现另一个问题是div是动态创建的,所以事件委托应该是$document。on@aM-Vee OP尚未确认它是在绑定事件处理程序后创建的;事件委托并不是绝对需要的。他动态创建了div,正如你在顶部的javascript代码中所看到的,什么时候附加了悬停?在创建元素之前,之后?不确定是否需要使用事件委派,因为问题中没有任何内容指示这两段代码何时执行以及以何种顺序执行。这很公平,但基于问题的语言,这是一个安全的赌注。@epascarello您是对的。当我更改鼠标悬停以单击该函数时,该函数已工作。看起来它已被弃用。感谢您解决我的问题。是的,但这并没有回答问题。问题已被回答。看时间是不是很难,以至于你不得不投反对票?答案要么回答问题,要么不回答。这不是针对个人的。这是游戏规则。
parent.appendChild('<div class="asd"></div>');