jquery mobile live () срабатывает слишком много раз, bind () не срабатывает после внедрения DOM - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь связать некоторые ссылки на элементы списка в jquery mobile с функцией щелчка с помощью этого js

$(document).bind('pageinit', function(event){

   $('a.comment_link').bind("click",function() {

    var comment_id = $(this).attr('comment_id');
    window.localStorage.setItem("comment_id",comment_id);

});

}

Да, я знаю, что это будет работать, только если DOM присутствует в pageInit (). Если я пытаюсь использовать функцию live () вместо этого, каждый раз, когда я нажимаю на элемент списка, он запускается, но затем запускается снова для того, сколько кликов было сделано ранее. Поэтому, когда я в первый раз щелкаю ссылку с классом comment_link, функция щелчка срабатывает, но при последующих щелчках она срабатывает 2x, 3x и т. Д.

В документах написано, что я могу использовать триггер ("создать") для элемента li в просмотре списка, а затем функция щелчка bind () должна подхватить эти новые элементы DOM, но я до сих пор не могу получить его работать таким образом. http://jquerymobile.com/test/docs/pages/page-scripting.html

Функция, генерирующая представления списка, выглядит следующим образом, где data - массив комментариев, а list - селектор просмотра jquery.

function generateComments(data,list){

list.html("");

$.each(data, function(key, comment) {
    var img;

    if(comment.user.icon){
        img = '<div class="icon_wrapper"><img src="http://stage.domain.com/assets/img/user/'+comment.user.icon+'"/></div>';
    }
    else{
        img = '';
    }

    var prettyTime = humaneDate(comment.created_at)

    var item = '<li class="blank"><a href="userprofile.html" class="comment_link" type="'+data.type+'" user_id="'+comment.user.user_id+'" id="'+comment.id+'">'+img+'<h4>'+comment.user.name+'</h4><p>'+comment.data+'</p><div class="stamp_wrapper"><p class="ui-li-aside">'+prettyTime+'</p></div></a></li>';

    list.append(item).trigger('create');
});

list.listview("refresh");

}

Не уверен, что я делаю не так. Есть ли другой способ перепривязать обработчик события щелчка?

1 Ответ

2 голосов
/ 14 марта 2012

Попробуйте использовать delegate() метод .....

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