Как использовать функцию привязки к "<li>", которая была сохранена динамически? - PullRequest
1 голос
/ 18 марта 2009

<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 ]

2 голосов
/ 18 марта 2009

Вы пытаетесь привязать элемент, который еще не существует в DOM.

Перемещение

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

до последней строки функции ввода-вывода. то есть до

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. У вас довольно много опечаток.

0 голосов
/ 18 марта 2009

Я вижу несколько ошибок:

  • testA никогда не объявляется и будет считаться глобальным
  • set-input не является допустимым именем функции
  • " input[type="text"]" должно быть " input[type='text']"
  • str должен быть равен $("ul") (может быть, не совсем уверен, что вы пытаетесь)
  • вы создаете несколько входов, которые будут иметь одинаковый идентификатор, вместо этого используйте класс

Было бы полезно, если бы вы опубликовали HTML-код, с которым вы работаете

Также, как правило, для написания чистого кода jQuery я стараюсь почти никогда не использовать конкатенацию внутри $ (), почти всегда есть лучший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...