2011-02-11 11 views
1

私はAjaxのかなりのビットを持っているサイトを構築しています。私はjScrollPaneを使用していくつかのロードブロッキングを起こしたようです。jqueryとjScrollPaneとajax

これは書き留めにくい場合があります。

私はメインページを持っており、その基盤にはすべてのオーバーレイまたはライトブライトを書き込むために使用するdivがあります。例えば

<body> 
<a href="#" onclick="$('#popup').load('some-url.php');return false;">content etc</a> 
<div id="popup"></div> 
</body> 

は、1つのそのようなオーバレイ(一部-url.php)に私がより多くのコンテンツを持っており、再び、私は、AJAXを使用して読み込まれますいくつかのより多くのdivを有します。

<body> 
<div id="left"></div> 
<div id="right"></div> 
<script> 
$('#left').load('another-url.php'); 
</script> 
</body> 

は今言うことができますいくつかの-url.phpのdivのid = "左" 私はそれにするJScrollPaneのスクロールをしたいが、それは、AJAXを介してコンテンツをロードします。

私が試みたのは、 'another-url.php'ですべてのコンテンツを読み込んでから、スクロールペインを追加しようとしています。

'別の-url.php'

<div class="wrapper> 
// iterate through my DB and gets lots of content 
</div> 
<script> 
$('#left').jScrollPane(); 
</script> 

これが失敗し、その$( '#は左')と言うにJScrollPane();関数ではないので、divでコンテンツを読み込んだ後、最初のオーバーレイに入れてみました。

<body> 
<div id="left"></div> 
<div id="right"></div> 
<script> 
$('#left').load('another-url.php'); 
$('#left').jScrollPane(); 
</script> 
</body> 

私はスクロールバーを取得していないが、これは、最初に失敗しません...しかし、私は再びそれをリロードする場合には、その$(「#は左」)と言って、再び失敗するJScrollPane();関数ではありません。

私はドキュメントを見て、動的コンテンツの例を使って試しました。

<body> 
<div id="left"></div> 
<div id="right"></div> 
<script> 
var api = $('#left').jScrollPane().data('jsp'); 
('a.some-link').bind(
'click', 
function(){ 
api.getContentPane.load(
'another-url.php', 
function(){ 
api.reinitialise(); 
} 
); 
} 
); 
</script> 
</body> 

しかし今回は再び$( '#left')と表示されます。jScrollPane();私はこれらのエラーのいずれかを取得するときにも、私はページをリロードするまで、突然jav'dではないサイト上の他のjScrollPaneは、もはや仕事を停止するので、明らかにjScrollPaneは私と一緒にいたずらを取得しています...

ライブラリーを作った人がここに遊びに来て応答することを望んでいます。

答えて

0

コンテンツがロードされた後にjScrollPane()を起動する必要があると思います。私が間違っていない場合、loadメソッドはascynchronousで、コンテンツがhtmlドーム$("#left")にロードされる前にjscrollpane()が起動します。これは、jscrollpaneが起動したときに実際に利用できないことを意味します。 $.ajaxSetup({ascync:false});を使用して、それが役立つかどうか確認してみてください。ロード方法に$.ajaxSetupが機能しない場合は、$.getメソッドを使用する必要があります。

IE:

$.ajaxSetup({async:false}); 
$('#left').load('another-url.php'); 
$('#left').jScrollPane(); 

ajaxSetupは、loadメソッドでは動作しない場合に.getメソッドに

$.ajaxSetup({async:false}); 
    var $jqxhr = $.get('another-url.php'); 
    $jqxhr.success(function(responseText,statusText,jqxhr){ 
     $('#left').html(responseText); 
    }); 
    $jqxhr.complete(function(){ 
     $('#left').jScrollPane(); 
    }); 
    $jqxhr.error(function(){alert("error loading content");}); 

を使用しようとするが、それがお役に立てば幸いです。私のために働いた。私も同様の問題がありました。