2

这是用jquery用外部.js编写的......

我有两个可以滑入和滑出视图的窗口,例如:

$(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' 是带有 Flash 图像画廊的 DIV,而 'showgal1' 和 'showgal2' 是锚点的 id...

好像

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

当单击一个并重新启用另一个时,我找不到禁用 .click 功能的方法...

我想默认禁用“showgal1”,当“showgal2”事件发生时,它会删除属性并禁用“showgal2”,直到单击“showgal1”...

.attr('disabled','disabled')还没有工作...

4

5 回答 5

1

showgal因此,如果关联的图库已经​​可见,您想在单击 a 时停止任何操作?

$('#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'});

});

click如果相应的画廊已经可见,则每个函数的前 2行将停止该函数。

于 2010-12-25T22:39:44.740 回答
0

试试这个:

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

您可以在单击链接时将“禁用”类添加到链接。请注意,这不会自行禁用链接,也不会像您尝试的那样设置 disabled 属性,因为只能禁用输入和按钮等表单元素。但是您可以在单击处理程序中检查该类是否存在,如果存在,则什么也不做:

$("#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 的数据函数将画廊的活动状态存储为真/假:

$('#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 回答