创建并触发动态ID

时间:2013-07-18 12:09:04

标签: javascript jquery for-loop

我只是想不出来......我正在尝试创建一个列表。在每个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/

希望得到帮助并提前致谢: - )

3 个答案:

答案 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/