是否无法通过编码为创建的元素创建函数
Is it impossible to create a function for a created element through coding?
var div = document.createElement('div');
div.setAttribute('class', 'asd');
parent.appendChild(div);
此代码基本上创建一个div 并将其附加到父元素中。
$(".asd").hover(function(){
alert("hey");};
这是悬停创建的div 时的一个函数。但它不起作用。有什么解决办法吗?
你忘记了一个右括号:
$(".asd").hover(function(){
alert("hey");
});
但实际上,如果您要动态添加元素,则应将hover
事件更改为使用 mouseover
和 mouseout
的事件,并使用事件委托,以便在事件阶梯(或任何名称(向上冒泡时可以捕获事件:
$(document).on('mouseover', '.asd', function () {
console.log('on')
}).on('mouseout', '.asd', function () {
console.log('off')
});
如果你打算使用jQuery,我建议你用它来进行所有的DOM操作。使用document.createElement
和jQuery有点奇怪。
演示
当然,但你需要使用事件委托:
$(document).on('mouseenter', '.asd', function() {
// do stuff here
}).on('mouseleave', '.asd', function() {
// undo stuff here
});
这会将事件侦听器应用于 DOM 加载上存在的某个祖先元素,并且仅当事件目标是作为第二个参数列出的元素时才运行该函数。
此方法允许您随意向页面添加元素,而无需创建新的悬停侦听器。任何具有类 asd
的元素都将附加侦听器。
如果性能是一个问题,请将 DOM 加载上可用的任何祖先元素替换为document
,以减少侦听器的范围。
http://api.jquery.com/on
请将所有代码括在DOM ready
中或将代码放在页面底部:
注意:对于此演示,我添加了function() {}
作为hover
的第二个参数,以便alert
不会出现两次......我可以/应该使用focusin
事件。
$(function() {
var parent = $('.parent')[0];
var div = document.createElement('div');
div.setAttribute('class', 'asd');
parent.appendChild(div);
$(div).hover(function() {
alert("hey");
}, function() {});
});
.asd {
border: 1px solid #000;
padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent"></div>
动态创建的div上的事件委托是错误的,并且有一个括号错误这样写
$(document).on(hover,"asd"function(){
alert("hey");
});
另外,你可以把创建div留给jquery
parent.appendChild('<div class="asd"></div>');
相关文章:
- 在运行时创建元素时移到一边时出错
- 如何在动态创建元素的内联onclick事件中传递对象
- 在 jquery 中创建元素
- 当我动态创建元素时,选择的插件不起作用
- HTML javascript函数来创建元素
- 从外部 js 脚本创建元素并插入到 html 中
- 在 d3 中为数据列表创建元素
- 如何在循环中创建元素并将其添加到DOM中
- JQuery-创建元素并将其连接到其他html
- 创建元素更好还是只在html上准备好它们
- 挂钩文档.使用函数原型创建元素
- Javascript动态创建元素和onclick函数
- 从任何jquery选择器字符串创建元素的最有效方法
- 动态创建元素和添加onclick事件不起作用
- 在javascript中创建元素时,CSS转换规则固有地被覆盖
- 如何在特定的HTML标记下用JavaScript创建元素
- 如何根据我正在读取的节点的元素名称创建元素
- 使用Jquery在元素中创建元素
- 使用JavaScript创建元素并使用它
- 将托管 Bean 与 javascript 结合使用来创建元素