2013-06-20 77 views
1

我有這樣的功能:jQuery的:追加html和更新DOM

$(document).on('scroll', function(e) 
{ 
    if (processing) 
    return false; 

    if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.9) 
    { 
    processing = true; 

    var resource = $('#lazyLoad').attr('href'); 

    $.get(resource, '', function(data) 
    { 
     $('#lazyLoad').remove(); 

     $('#content').append(data); 

     step++; 
     processing = false; 
    }); 
    } 
}); 

我每到這個函數被調用時添加一些HTML代碼到我的網頁。但是當我點擊新添加的html按鈕時,其他Javascript函數不會被觸發。所以我想DOM元素不是porper更新的。但是,我該如何正確更新DOM元素?

我的處理程序是這樣的:

$('.article_action.un_read').on('click', function(event) 
{ 
    event.preventDefault(); 

    var resource = $(this).attr('href'); 
    var elElemente = $(this); 

    $.get(resource, '', function(data) 
    { 
    var obj = $.parseJSON(data); 

    if(obj.status == 1) 
     elElemente.html('📕'); 
    else 
     elElemente.html('📖'); 
    }); 
}); 

所以該機還採用了on功能。

+1

檢查:http://stackoverflow.com/questions/9814298/does-jquery-on-work-for-elements-that-are-added-after-the-event-handler-is-cre – halilb

+0

感謝halilb,那個線程正是我尋找的東西。 – Pascal

回答

4

試試這樣說:

$('#content').on('click', '.article_action.un_read', function(event) { 
    event.preventDefault(); 

    var resource = $(this).attr('href'); 
    var elElemente = $(this); 

    $.getJSON(resource, '', function(obj) { 
     elElemente.html(obj.status == 1 ? '📕' : '📖'); 
    }); 
}); 
0

您必須將按鈕點擊與委託事件綁定。

$('#parentElement').on('click', 'button', function() {}); 
0

您需要再次提及的事件綁定聲明

​​

其追加HTML裏面的功能。

檢查樣品fiddle

編輯: 但首先你應該拆散這追加的HTML,防止回調,多個呼叫函數內部舊事件。

$(<selector>).off();