调用.onclick函数中方法中选定的循环元素
calling the selected loop element in a method in a .onclick function
我尝试用第二个参数作为循环中当前选定的元素调用方法addProject()
。但是当我调用addProject()
时,参数的参考是null
。
我认为当我使用.onclick
按钮时,循环中当前选择的参数的引用丢失了。但我如何用另一种方式给方法这个参数呢?
$(document).ready(function () {
for (var i = 0; i <= proj_array.length - 1; i++) {
var h = document.createElement("h1");
var p = document.createElement("p");
p.innerHTML = proj_array[i].projectdescription;
h.innerHTML = proj_array[i].projectname;
$(".projectsList").append(h).append(p);
var button = document.createElement("button");
button.style.width = "70px";
button.style.height = "27px";
button.innerHTML = "Add";
$(button).addClass("enable");
button.onclick = function () {
if ($(button).hasClass("enable")) {
addProject(this, proj_array[i]);
}
}
$(p).append(button);
}
$(".projectsList").accordion();
});
你需要一个闭包:
(function(proj) {
$(button).on('click', function() {
if ( $(this).hasClass("enable") ) {
addProject(this, proj);
}
});
})(proj_array[i]);
或者你可以坚持使用jQuery,不要让它变得太复杂:
$(function() {
$.each(proj_array, function(i, proj) {
var h = $('<h1 />', {html: proj.projectdescription}),
p = $('<p />', {html: proj.projectname}),
button = $('<button />', {
width : '70px',
height : '27px',
html : 'Add',
'class':'enable'
});
button.on('click', function() {
if ($(this).hasClass("enable")) {
addProject(this, proj);
}
});
$(p).append(button);
$(".projectsList").append(h, p).accordion();
});
});
将其存储为data-*
属性:
var button = document.createElement("button");
$(button).data('proj', proj_array[i]);
在onclick
中您可以检索它:
if($(this).hasClass("enable")) {
addProject(this, $(this).data('proj'));
}
在点击处理程序中也使用$(this)
而不是$(button)
。
相关文章:
- PHP:同时循环元素粘在一起
- 按数据属性循环元素并替换值
- Javascript/Jquery 循环元素
- for 循环元素的执行时间比内部 AJAX 调用可以响应的要快
- jQuery:对于循环元素 attr 更改,所有元素都有最后一个元素 attr
- 以延迟的方式循环元素
- 通过使用JQuery加载外部文件来循环元素
- Javascript库中每个循环元素
- 无法访问嵌套的循环元素
- JQuery中的循环元素
- 如何循环元素&数数
- 如何在jQuery事件中引用循环元素
- 循环元素's在DOM中的ID
- 循环元素不起作用
- Javascript循环元素并使用WebdriverIO单击链接
- 循环元素's列表创建一个没有jQuery的转盘
- 调用.onclick函数中方法中选定的循环元素
- 循环元素json数组
- 获取jQuery中每个循环元素的父元素
- 如何在jQuery中循环元素并同时替换