2011-01-26 69 views
3

我使用jquery colorbox在窗口中彈出用戶帳戶。我也有一個按鈕,通過ajax將更多的用戶加載到頁面中,但由於某些原因,用戶加載ajax的用戶不會在colorbox窗口中彈出。我怎樣才能讓colorbox與通過ajax返回的內容一起工作?通過ajax返回的顏色框和內容

function loadMore(pageNo) { 
    //$("#loading").html('Loading...').show(); 
    var url = '/search/resultsAjax'; 
    $.get(url, {page: pageNo}, function(response) { 
     $("#results").append(response); 
     //$("#loading").hide(); 
    }); 
} 

$(document).ready(function() { 
    var currPage = 1; 
    $("a.next").click(function() { 
     loadMore(++currPage); 
    }); 

    $("a.usr").colorbox({width:"960px", height:"90%", iframe:true}); 
}); 

回答

6

當您在$(document).ready()綁定顏色框與此:

$("a.usr").colorbox({width:"960px", height:"90%", iframe:true}); 

jQuery將經過網頁搜索,抓取匹配a.usr一切,結合顏色框這些項目,然後忘記所有關於a.usr。 jQuery不會記得你對a.usr感興趣,所以新的不會是colorbox'd。

通常的解決方案是使用.live().delegate()但這些不會在這裏工作,因爲沒有「colorbox」事件。

但是,您可以輕鬆地用手綁定colorbox。嘗試改變loadMore到更多的東西是這樣的:

function loadMore(pageNo) { 
    $.get('/search/resultsAjax', { page: pageNo }, function(response) { 
     var $html = $(response); 
     $html.find('a.usr').colorbox({ width: '960px', height: '90%', iframe: true }); 
     $('#results').append($html); 
    }; 
} 

你只是把response HTML成一個jQuery對象,找到所有它裏面的a.usr的東西,結合顏色框那些,然後插入新的HTML到DOM作爲通常。

+0

感謝您的迴應,我只是想知道,會有任何區別,如果我先附加html,然後重新綁定colorbox? – BugBusterX 2011-01-26 21:22:22

3

使用此:

<a onclick='parent.$.colorbox({href:"schedule_delete.php?sid=<?php echo $schedule_row->schedule_id; ?>"}); return false;'>delete</a 
8

如果你想讓它在全球開展工作,不管內容如何加載:

$('body').on('click', 'a.usr', function() { 
    $(this).colorbox({width:"960px", height:"90%", iframe:true}); 
});