jQuery click () не работает с JSON - PullRequest
       1

jQuery click () не работает с JSON

0 голосов
/ 26 октября 2011

У меня есть список сгенерированных JSON данных, извлеченных из базы данных MySQL.Что я пытаюсь сделать сейчас, так это то, что при нажатии любого элемента в списке он будет добавлен в скрытый вход для моей формы, но проблема в том, что если я сделаю это:

$(".buttonZvrst").click(function(){
alert("this is a test");
});

ничего не случится.Если я выберу любой другой элемент, которого нет в списке, сгенерированном JSON, он будет работать.Разве это не работает, потому что он генерируется позже?Мне нужна помощь!Вот моя функция getZvrsti, где находится JSON.

function getZvrsti(id) {
            // Save the request to our requests object
            request[id] = $.getJSON('test.php?parent='+id, function(data) {
                var html = "";
                $.each(data, function(id, name) {
                    if(name['id'] in izbrani){
                        if(izbrani[name['id']] == true){
                            html += '<li id="drugaZvrst" class="izbran"><a class="buttonZvrst" href="#" id="'+name['id']+'">'+name['name']+'</a></li>';
                        }
                        else{
                            html += '<li id="drugaZvrst"><a class="buttonZvrst" href="#" id="'+name['id']+'">'+name['name']+'</a></li>';
                        }
                    }
                    else
                    {
                        izbrani[name['id']] = false
                        html += '<li id="drugaZvrst"><a class="buttonZvrst" href="#" id="'+name['id']+'">'+name['name']+'</a></li>';
                    }


                });
                // Append the list items and then fade in
                listUl.append(html);
                druga.show(400);
                // We no longer have a request going, so let's delete it
                request = false;
            });
        }

Ответы [ 3 ]

8 голосов
/ 26 октября 2011

Вы используете .click, который связывает его один раз для доступных элементов во время выполнения скрипта. Для динамических элементов вам нужно .live искать .live () в Документах jQuery:

.live : присоединить обработчик к событию для всех элементов, которые соответствуют текущему селектору, сейчас и в будущем.

1 голос
/ 26 октября 2011

Вам нужно сделать .live для элементов, прикрепленных после начальной загрузки DOM .live позволит прикреплять события, созданные после инициализации dom .bind не будет.

$(".buttonZvrst").live("click", function(e){
    alert("this is a test");
});
0 голосов
/ 26 октября 2011

Попытка добавить этот код в функцию обратного вызова в самом конце так:

            // Append the list items and then fade in
            listUl.append(html);
            druga.show(400);
            // We no longer have a request going, so let's delete it
            request = false;

            $(".buttonZvrst").click(function(){
              alert("this is a test");
            });

        });
    }
...