【问题标题】:how to use bind function to "<li>", which was kept dynamically?如何对动态保存的“<li>”使用绑定函数?
【发布时间】:2009-03-18 10:44:17
【问题描述】:

&lt;li&gt;set_input() 函数保存,在使用 getJSON() 获取 data 之后。 但即使绑定功能也不起作用。 任何人都可以帮助我!

$(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'} ]

【问题讨论】:

  • 'set-input' 可能是你的问题,或者只是一个错字,'-' 在 javascript 函数名称中无效
  • 即使我删除了它也不起作用!

标签: jquery events event-handling


【解决方案1】:

您正在尝试绑定到 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());
    })
}

附注你有很多错别字。

【讨论】:

  • 还有其他可能的方法吗?我不想将该代码保留到 set-input 函数的最后一行
  • 因为set-input函数在另一个文件里,我想把click函数写在另一个文件里!
  • 在附加到 set-input() 的自定义事件中添加您的代码,然后触发该事件:-)
  • 另外你可以使用 $().live()
【解决方案2】:

我看到几个错误:

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

如果你发布了你正在针对它运行的 HTML,这会有所帮助

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多