如何定义在此循环中创建的按钮的onClick属性?.JQuery似乎根本不适用于该类。
for(started somewhrere...
var button = document.createElement('button')
var div = document.createElement('div')
var img = document.createElement('img')
img.src = "../img/download.png"
var p = document.createElement('p')
p.appendChild(document.createTextNode("Descargar"))
div.appendChild(img);
div.appendChild(p);
button.appendChild(div);
button.onClick = "DOSOMETHINGFFS()"
button.className = "download"
for end somewhere...}
function DOSOMETHINGFFS(){
alert("no")
}
BTW JQuery实际上并没有真正帮助
$(".download").click(function() {
alert("ok")
});
答案 0 :(得分:1)
确保您实际上已将元素添加到页面中(例如下面的container.appendChild
),并且拼写错误onclick
。 (你有一个大写字母C.)否则,我认为你所做的是好的,但是分配实际的函数而不是带有调用函数调用的JavaScript代码的字符串会更好:
function doSomething(url){
console.log("download " + url);
}
var container = document.getElementById("container");
for (var i = 0; i < 5; i++) {
var button = document.createElement('button');
button.innerText = "click me";
button.className = "download";
button.onclick = (function (url) {
return function () {
doSomething(url);
};
})("URL #" + i);
container.appendChild(button);
}
$('.download').click(function () {
console.log("clicked from jQuery handler");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container"></div>
&#13;
修改强>
还使用jQuery添加处理程序。这也很好。
编辑2
更改了onclick
示例,为每个按钮添加了不同的参数。有几种方法可以实现这一点,但我使用了immediately-invoked function expression (IIFE)。
答案 1 :(得分:1)
这将处理动态添加到dom的任何元素的点击事件。
$('body').on("click",".download" , function() {
alert("ok");
});
答案 2 :(得分:0)
$(".download").click(function() {
alert("ok")
});
如果按钮已经在DOM中,上面的代码将起作用,因为你是动态创建的,所以你需要将父元素上的点击绑定为
$(document).on('click','.download',function(){
alert('ok');
});