2009-07-30 27 views
2

私はASP.NETでフォトギャラリーを構築しています。ユーザーは、左側のサムネイルをブラウズして1つを選択すると、ページの右ペインにプレビューサイズのバージョンが表示されます。jQuery:ASP.NET ImageButtonをクリックすると画像がフェードアウトする

イメージをフェードアウトして、現在のフェードアウトと次のフェードインを行うようにしたいと思います。jQueryを使用してプレビューイメージを読み込んだ後にフェードインします。残念ながら、クリックイベントがページをサーバーにポストバックする前に、fadeOutスクリプトを実行することができません。サムネイルはASP.NET ImageButtonsです。つまり、<input>タグです。

イメージがフェードアウトするのに十分な時間だけポストバックを取得する方法はありますか?私はフォームonSubmitとsetTimeout()でいくつかのトリックを見てきましたが、それはページのすべてのリンクとボタンに影響します。サムネイルのポストバックを遅らせたい

TIA

EDIT:私の研究に基づいて、以下の提案をしようと、それはこれを達成するためのポストバックを遅らせることが可能かもしれないが、それはいくつかのレベルで最高のアプローチではありません。イメージ間のクリーンなフェードトランジションを得るために、将来私はポストバックを全くしません。私はフェードアウト、ロード、フェードインのためにjQueryだけを使用します。

+0

@Dave - 私は自分の投稿を次のように更新しました...そこにある他のアイデアを見てください...私はマークを見逃してしまった場合、ポストバックがあなたに与えていることをよく分かりません。 – RSolberg

答えて

0

ここで私が使用した溶液です:

私はUpdatePanelのでMS AJAXを使用しておりますので、私は、クライアント側のAJAXのイベントハンドラを使用することができます。

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(fadeOut); 

function fadeOut() { 
     if ($('.mainImage').length > 0) { 
      $('.mainImage').fadeOut('normal'); 
     } 
    } 

これは私が、ユーザがサムネイルの間を移動する任意の時間をwanted-正確な動作を与え、画像は、負荷をフェードアウトし、新しいものがフェードイン。

...しかし

これはまだ理想的ではありません。なぜなら、ページがポストバックしている間にフェード間に休止があるからです。今は動作しますが、長期的には、サムネイルをImageButtonとしてポストバックするのではなく、jQueryを使用してプレビュー画像を設定する方がよいでしょう。

3

フェードイン/アウトを扱うあなたの機能に虚偽のリターンを追加してみてください...それが発生してからページポストバックを防ぐ必要があります...

$('#<%= this.aspbutton.ClientId%>').click(function(){ 
    $('#myDiv').fadeout("slow"); 
    return false; 
}); 

私はあなたが上になっているかわからないんだけどあなたが画像をフェードアウトしてから消したいと思っているPostBack。AJAXを使って考えてみましたか?サムネイル画像に画像タグの中に必要な情報が含まれていても、大きな画像にすることができます。

jQuery Lightbox pluginをご覧ください。私はこのプラグインを実装して、Webビューに加えてより高解像度の写真を表示できるように少し修正しました。それをチェックしてくださいhere

+0

私は彼がポストバックを遅らせたいと思っています。これを行う方法を示すために編集されました。 –

+0

これは永遠に繰り返される – redsquare

+0

クリックを呼び出す前にクリックのバインドを解除する必要があります。 – redsquare

0
$('#<%= this.aspbutton.ClientId%>').click(function(){ 
    var $btn = $(this); 
    $('#myDiv').fadeout("slow", function() { 
     $btn.unbind('click').click(); 
    }); 
    return false; 
}); 
+1

申し訳ありませんが、スクリプトが実行される前にポストバックしています。サムネイルをクリックしたときにポストバックするのではなく、AJAX経由でjQuery経由で画像を読み込む必要があるかもしれません。 –

+0

イベントの中にあるオブジェクトにイベントをフックアップした厄介な更新パネルがあるとします。彼らが物事を作るのがいかに難しいか見てくださいできる場合は失ってjQueryに固執してください。 MSはそれらを放棄した。 – redsquare

+1

あなたが更新パネルに固執するつもりなら、私はこの質問を閉じて、実際の事実を持つ新しいものを始めるでしょう! – redsquare

関連する問題