2012-03-14 53 views
0

我想在jQuery Mobile的一些列表項的鏈接綁定到這個點擊功能的jsjQuery Mobile的現場()觸發太多次綁定()不會火DOM注射後

$(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); 

}); 

} 

是的,我知道這隻有在pageInit()中存在DOM時纔有效。如果我每次點擊它激發的列表項時嘗試使用live()函數,但會再次觸發先前的點擊次數。因此,我第一次點擊與類comment_link鏈接點擊功能的作品,但隨後的點擊將使其火災2倍,3倍,等等。

在文檔中說,我可以使用觸發器(「創建」)李item),然後bind()點擊函數應該選擇這些新的DOM元素,但是我仍然無法按照這種方式工作。 http://jquerymobile.com/test/docs/pages/page-scripting.html

生成列表視圖的函數如下所示,其中data是一個註釋數組,list是jquery listview選擇器。

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"); 

}

不知道我做錯了。有沒有不同的方式來重新綁定點擊事件處理程序?

回答

2

嘗試使用delegate()方法.....

+0

似乎工作得很好。 – Brian 2012-03-14 11:54:19

相關問題