2

これは、jquery を使用して外部の .js で記述されています...

次のように、ビューに出入りする2つのウィンドウがあります。

$(document).ready(function() {
  // hides gallery1 as soon as the DOM is ready  
  $('#gallery1').hide();  
  // shows the menu on click   
  $('#showgal1').click(function() {  
    $('#gallery1').delay(490).show('slide', {direction:'left'});
    $('#gallery2').hide('slide', {direction:'right'});
    //need code to disable showgal1 and enable showgal2
  });
  $('#showgal2').click(function() {  
    $('#gallery2').delay(490).show('slide', {direction:'right'});
    $('#gallery1').hide('slide', {direction:'left'});
    //need code to disable showgal2 and enable showgal1
  });
});

'gallery1' と 'gallery2' はフラッシュ イメージ ギャラリーを含む DIV であり、'showgal1' と 'showgal2' はアンカーの ID です...

のように見える

<a href="#" id="showgal1">gallery 1</a>

一方がクリックされたときに.click機能を無効にし、もう一方を再度有効にする方法が見つかりません...

デフォルトで「showgal1」を無効にしたいのですが、「showgal2」イベントが発生すると、属性が削除され、「showgal1」がクリックされるまで「showgal2」が無効になります...

まだ機能し.attr('disabled','disabled')ていません...

4

5 に答える 5

1

showgal関連付けられたギャラリーが既に表示されている場合、 がクリックされたときにアクションを停止したいですか?

$('#showgal1').click(function(){
    if($('#gallery1').is(":visible"))
       return false;

    $('#gallery1').delay(490).show('slide', {direction:'right'});
    $('#gallery2').hide('slide', {direction:'left'});

});

$('#showgal2').click(function(){
    if($('#gallery2').is(":visible"))
       return false;
    $('#gallery2').delay(490).show('slide', {direction:'right'});
    $('#gallery1').hide('slide', {direction:'left'});

});

各関数の最初の 2 行はclick、それぞれのギャラリーが既に表示されている場合に関数を停止します。

于 2010-12-25T22:39:44.740 に答える
0

リンクをクリックしたときに「無効」なクラスをリンクに追加できます。入力やボタンなどのフォーム要素のみを無効にできるため、これはリンク自体を無効にしたり、無効にした属性を設定したりしないことに注意してください。ただし、クリック ハンドラー内でクラスが存在するかどうかを確認できます。存在する場合は何もしません。

$("#showgal1").hide();
$("#showgal2").addClass("disabled");

// shows the menu on click   
$('#showgal1').click(function() {  
   if ($(this).hasClass("disabled")) return false;

   // Note the extra .addClass or .removeClass on the end
   $('#gallery1').delay(490).show('slide', {direction:'left'}).addClass("disabled");
   $('#gallery2').hide('slide', {direction:'right'}).removeClass("disabled");
});
$('#showgal2').click(function() {  
   if ($(this).hasClass("disabled")) return false

   $('#gallery2').delay(490).show('slide', {direction:'right'}).addClass("disabled");
   $('#gallery1').hide('slide', {direction:'left'}).removeClass("disabled");
});

クラスを追加する利点は、CSS を使用して無効なボタンの外観を与えることができることです。

.disabled {
   color: grey;
}
于 2010-12-25T22:44:46.603 に答える
0

また、名前で表示されるものを追跡する変数をコードに保持することもできますdiv。これにより、将来さらに多くのパネルが必要になった場合に拡張が容易になります。現在表示されているの名前を変数に保存し、クリックされたアイテムがそれではないことを確認してから、何かを実行してください。

于 2010-12-25T22:46:14.290 に答える
0

あなたの質問を完全に理解しているかどうかはわかりませんが、ギャラリーが既に表示されている場合、リンクがクリック ハンドラーをトリガーしないようにする必要があると思います。

jQuery のデータ関数を使用して、ギャラリーのアクティブ状態を true/false として保存します。

$('#showgal1').click(function() {
    var $gal1 = $(this), $gal2 = $('#gallery2');
    if(!$('#gallery1').data('active')){
        $gal1.delay(490).show('slide', {direction:'left'}).data('active', true);
        $gal2.hide('slide', {direction:'right'}).data('active', false);
    }
});
于 2010-12-25T22:46:19.327 に答える
0

これを試して:

.attr('onclick','void(0)');
于 2010-12-25T22:30:08.337 に答える