动态创建的元素的SetAttribute类-Javascript
SetAttribute Class of a dynamically created element - Javascript
我正在动态创建一个超链接元素,并设置其属性类,以便在单击它时触发一个函数。
以下是用于动态创建超链接元素的代码:
editLink = document.createElement("a");
editLink.setAttribute("class", "edit-button");
这就是点击链接时应该发生的情况:
$(document).ready(function(){
$('.edit-button').click(function(event){
event.preventDefault();
var docHeight = $(document).height();
var scrollTop = $(window).scrollTop();
$('.overlay').show().css({'top': scrollTop + 'px'});
});
});
但单击它时不会发生任何事情。提前感谢:)
不确定是否将创建的元素添加到body中。我做了这些改变,它运行良好
var editLink = document.createElement("a");
editLink.setAttribute("class", "edit-button");
editLink.innerHTML = "Click"; // added text for testing
window.document.body.appendChild(editLink); // Appending to body
$(document).ready(function(){
$('.edit-button').click(function(event){
event.preventDefault();
alert('1')
var docHeight = $(document).height();
var scrollTop = $(window).scrollTop();
$('.overlay').show().css({'top': scrollTop + 'px'});
});
});
jsfiddle
尝试这个
var editLink = document.createElement("a");
editLink.setAttribute("class", "edit-button");
editLink.innerHTML = 'click';
document.body.appendChild(editLink);
$(function() {
$('.edit-button').on('click',function(event){
alert('clicked');
event.preventDefault();
var docHeight = $(document).height();
var scrollTop = $(window).scrollTop();
$('.overlay').show().css({'top': scrollTop + 'px'});
});
});
https://jsfiddle.net/s718ay3g/1/
事件委派就是实现这一点的方法。
当您直接将事件添加到.edit-button
时,在加载文档时,浏览器会将该事件侦听器仅附加到当前现有的.edit-button
元素。对于具有相同类的新创建的元素,它不会自动执行。
您可以做的是将事件的biding和listener代码放在一个函数中,并在每次向DOM添加新元素时调用它。但这被认为是一种糟糕的做法。
欢迎,活动代表团。
其想法是将事件附加到非动态的父/祖先元素,并仅当事件目标是您指定的元素(与某种类似选择器的类或ID匹配)时才触发事件。
在您的情况下,更新后的事件绑定代码如下所示。
$(document.body).on("click", ".edit-button", function(){
//whatever you want to do in here.
});
然后,您可以继续像以前那样将类添加到新创建的元素中。。。
var editLink = document.createElement("a");
editLink.setAttribute("class", "edit-button");
该活动仍然有效。
通过这种方式,您只附加一次事件。
如果按钮/链接将包含在容器div
或类似容器中,请将事件附加到该容器而不是主体。
$(".class-of-the-container").on("click", ".edit-button", function(){
//whatever you want to do in here.
});
相关文章:
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- javascript 的 Set 和普通的普通对象有什么区别
- set razor@Html.Hidden在javascript函数中
- 使用Set属性在JSP:UseBean中设置javascript变量值
- JavaScript set 超时循环返回值
- javascript set cookie IE7
- Javascript set 属性函数不起作用
- Javascript set iframe src - 正确的格式
- JavaScript set cookie via iFrame via CORS via PHP Allow Head
- Javascript set src 属性的图像不起作用
- 将Javascript“Set”转换为数组
- Air javascript set NativeWindow alwayInFront
- 是所有浏览器都支持的JavaScript Set数据结构
- Javascript set
- 任何使javascript set interval或setTimeout在node.js服务器重启后继续计数的解决方案
- Javascript set CSS :after styles
- Javascript set/clearinterval不起作用
- 如何在Javascript Set上运行map
- 使用Javascript Set作为Mongoose SchemaType
- Javascript set Attribute