2011-07-13 26 views
1

本質上,我試圖從內部鏈接加載內容到一個div。現在它在一定程度上起作用。到目前爲止,我的代碼從目標div抓取鏈接,然後單擊將「content」div動畫化,並替換目標鏈接上的「content」div。Jquery .show沒有正確的動畫,並沒有抓住目標中的所有鏈接

//Target links and call on click 
$('#scrollbox li a').click(function(){ 
//Define load paramaters 
var toLoad = $(this).attr('href')+' #content'; 
//Hide content 
$('#content').hide('fast',loadContent); 
//Remove Load Bar 
$('#load').remove(); 
//Show Load Bar 
$('#wrapper').append('<span id="load">LOADING...</span>'); 
$('#load').fadeIn('normal'); 


function loadContent() { 
    $('#content').empty().load(toLoad,'',showNewContent()) 
} 
function showNewContent() { 
    $('#content').show('slow',hideLoader()); 
} 
function hideLoader() { 
    $('#load').fadeOut('normal'); 
} 
return false; 

}); 

第一個問題是隱藏舊內容,對新內容的表演過後,動畫是波濤洶涌,和舊的內容仍然是可見和動畫,直到在最後milisecond新的內容只是「閃爍「in。舊的內容不應該隱藏,新的內容應該顯示嗎?我試圖用.empty來解決這個問題,但是現在它只是彈開,好像根本沒有.show動畫。

第二個問題是,我的任何代碼似乎都有影響的唯一鏈接是目標div中的標題鏈接,「內容」div(目標div內)中的鏈接不受影響,並重新加載整個頁面。我是否需要在div的內部定位div?我的代碼中沒有針對div內的所有鏈接嗎?

如果您需要進一步澄清任何事情,請讓我知道。

乾杯和感謝的幫助。

回答

0

固定。將動畫設置爲0,以便沒有任何動畫。 (所以便宜的修復)

使用.live()命令綁定到重新加載所有後續鏈接的命令。

$(document).ready(function(){ 

$('.scroll-pane').jScrollPane({showArrows: true}); 

$('#scrollbox a').live('click', function() { 
//all elements that exist now and elements added later 
//with this class have this click event attached 

//Define load paramaters 
var toLoad = $(this).attr('href')+' #content'; 
//Hide content 
$('#content').hide(0,loadContent); 

function loadContent() { 
    $('#content').load(toLoad,'',showNewContent()) 
} 
function showNewContent() { 
    $('#content').fadeIn(0); 
} 

return false; 


}); 

});