我只是想不出来......我正在尝试创建一个列表。在每个li中都有相同的用户。
我想为每个用户创建一个唯一的div id,以便点击并链接到特定的点击功能......
这是我得到的:
$(document).ready(function(){
var columnsarray = [];
for(var i = 0; i < 3; i++){
var userarray = [];
for(var j = 0; j < 2; j++){
userarray.push("<div id='userholder-"+j+"-"+i+"'>UserID "+j+"</div>");
$(function(){
$("#userholder-"+j+"-"+i+"").click(function() {
alert("It Works!");
});
});
}
columnsarray.push($("#thelist").append("<li><div class='info'></div>"+userarray+"</li>"));
}
});
当在我的“用户”中使用j和i时,它将无法正常工作...如果我丢弃了j和i它的工作方式非常完美......是不是可以做我想做的事情???
jsfiddle示例:http://jsfiddle.net/jmansa/sTULJ/
希望得到帮助并提前致谢: - )
答案 0 :(得分:1)
这不是正确的方法。
为每个div添加一个类,并在调用click函数时获取一个data-id:
jquery代码:
$(document).ready(function(){
var columnsarray = [];
for(var i = 0; i < 3; i++){
var userarray = [];
for(var j = 0; j < 2; j++){
userarray.push("<div id='userholder-"+j+"-"+i+"' class='press' data-id='"+j+"-"+i+"'>UserID "+j+"</div>");
}
columnsarray.push($("#thelist").append("<li><div class='info'></div>"+userarray+"</li>"));
}
$('.press').click(function(){
alert($(this).attr("data-id"));
})
});
更新了fidle: - &gt; http://jsfiddle.net/sTULJ/1/
答案 1 :(得分:0)
在动态创建元素时,需要使用live方法来附加事件处理程序。注册处理程序时,没有与选择器匹配的元素。尝试更改您的代码以使用这样的直播:
$("#userholder-"+j+"-"+i+"").live("click",function(){
alert("It Works!");
}
);
答案 2 :(得分:0)
您还可以拥有class
属性,并为该类设置click事件,如:
$(document).ready(function(){
var columnsarray = [];
for(var i = 0; i < 3; i++){
var userarray = [];
for(var j = 0; j < 2; j++){
userarray.push("<div id='userholder-"+j+"-"+i+"' class='clickClass'>UserID "+j+"</div>");
}
columnsarray.push($("#thelist").append("<li><div class='info'></div>"+userarray+"</li>"));
}
$(".clickClass").click(function(){
alert("It Works!");
});
});
检查js小提琴链接:http://jsfiddle.net/KG4LD/