如何使用动态保存的“<li>”绑定功能?</li>

时间:2009-03-18 10:44:17

标签: jquery events event-handling

<li> set_input()函数保留,使用 getJSON()获取数据后。 但即使绑定功能也无效。 任何人都可以帮助我!

$(document).ready(function()
{

$.getJSON("sample1.php?",
    function(data){
          $.each(data, function(i,j){
                testA[j.id]=j.name;
            });
            set_input("div_1","continent",testA);
    });

$("#"+div_D+" ul li").bind("click",function(){
    $("#"+div_D+" input[type='text']").val($(this).text());
})  
});


  function set_input(div_D,name_N,Array_A){

    $("#"+div_D).html("<input id="+name_N+">");
    var str="<ul>";
    $.each(Array_A,function(m,n){
        str +="<li>"+n+"</li>"
    })
    $("#"+div_D+" input[type="text"]").after(str);
  }


  This is JSON array:
[ {'id':'0','name':'Africa'},{'id':'1','name':'Americas'},{'id':'2','name':'Asia'},{'id':'3','name':'Europe'},{'id':'4','name':'Oceania'} ]

2 个答案:

答案 0 :(得分:2)

您正在尝试绑定到DOM中尚不存在的项目。

移动

$("#"+div_+" ul li").bind("click",function(){
        $("#"+div_+" input[type="text"]").val($(this).text());
})

到set-input函数的最后一行。即

function set-input(div_,name_,Array_){
        $("#"+div_).html("<input id="+name_+">");
        var str="<ul>";
        $.each(Array_,function(m,n){
                str +="<li>"+n+"</li>"
        })
        $("#"+div_+" input[type="text"]").after(str);

    $("#"+div_+" ul li").bind("click",function(){
        $("#"+div_+" input[type="text"]").val($(this).text());
    })
}

P.S。你有很多错别字。

答案 1 :(得分:0)

我看到几个错误:

  • testA永远不会被声明,并将被假定为全局
  • set-input不是有效的函数名称
  • " input[type="text"]"应为" input[type='text']"
  • str应该等于$("ul")(也许,不完全确定你想要的是什么)
  • 您正在创建多个输入,这些输入都具有相同的ID,而不是使用类

如果您针对

发布了运行此HTML的HTML,那将会有所帮助

另外作为编写干净的jQuery代码的经验法则,我尝试几乎从不在$()中使用连接,几乎总是有更好的方法。