2012-02-29 178 views
3

我有一個無序列表,使用$.get()從外部文件加載。一旦加載完畢,無序列表需要在頁面加載時使用.show()(它是display:none;默認情況下)進行操作。AJAX加載內容的jQuery函數

在閱讀了很多解釋之後,我明白了爲什麼show()不適用於加載的內容。他們說你需要使用live()(當然,現在是.on())將一個處理程序附加到一個事件上,但所有的例子都是點擊和鼠標移動的東西。

Ajax調用:

$.get('/wordpress/wp-content/themes/nascar_plaza/inc/sidebar_login.php', function(data) { 
    $('#site-header-nav-container > ul > li:last-child').append(data); 
}); 

jQuery來上加載的內容運行:

$('.current-menu-ancestor .sub-menu').css({ 
    display: 'block', 
    width: '235px' 
}); 
$('.current-menu-ancestor .sub-menu li').show(); 

能有人給我如何讓上面的代碼上的內容運行它一直是之後的示例裝?

回答

5

像你說的那樣:「它的加載後運行」

var url = '/wordpress/wp-content/themes/nascar_plaza/inc/sidebar_login.php' 

$.get(url, function(data) { 

    //anything in this block runs after the ajax call 

    $('#site-header-nav-container > ul > li:last-child').append(data); 

    $('.current-menu-ancestor .sub-menu').css({ 
     display: 'block', 
     width: '235px' 
    }); 

    $('.current-menu-ancestor .sub-menu li').show(); 

}); 
3

你的代碼(CSS處理和顯示列表)的第二部分應該去的回調函數,它運行后里面的數據加載。

$.get('/wordpress/wp-content/themes/nascar_plaza/inc/sidebar_login.php', function(data) { 

    $('#site-header-nav-container > ul > li:last-child').append(data); 

    $('.current-menu-ancestor .sub-menu').css({ 
     display: 'block', 
     width: '235px' 
    }).find('li').show(); 

}); 
+0

+1,很好的鏈接。你可以通過將'.append()'鏈接起來,使它更高效,就像這樣:'.append(data).find('。current-menu-ancestor .sub-menu')。css({display: 'block',width:'235px'})。find('li')。show();' – Jasper 2012-02-29 04:47:50

+0

Err,太簡單了!這樣做會有明顯的性能損失。顯示時您可以看到彈出的元素。任何方式來解決這個問題?我想它是從它加載,但該文件只是幾行HTML。 – Combobreaker 2012-02-29 06:17:25