JQuery将隐藏元素检测为隐藏的可见和可见元素

时间:2012-09-04 12:19:21

标签: jquery ruby-on-rails-3

我试图根据元素是否隐藏来调用某些函数。奇怪的是,类似的条件在两个元素的相同代码中工作正常,除了一个。

我正在做这样的事情:

  1. 点击链接,隐藏链接并显示备用链接
  2.  $('#link1').click(function() {
          $('#alt_link1').show();
          $('#link1').hide();
          $('#link2').hide();
          $('#link3').show();
    
    1. 根据隐藏链接的知识,我会做其他事情
    2.  if ( $("#link1").is(':hidden') && $("#link2").is(':hidden') ) {
          $('#link3').click(function() {
          ..... }
       }
      

      现在点击了link1,link1和link2应该是隐藏的,而link3应该是可见的,正如我在Firebug中看到的那样,但是在一个案例中,JQuery检测到条件中的隐藏元素是可见的和可见的隐藏的。现在类似的条件在我在同一个代码文件中的两个案例的其余部分中工作正常,但奇怪的是没有其他的。

      我尝试以多种方式做到这一点无济于事。我真的很困惑。

2 个答案:

答案 0 :(得分:0)

假设以下序列,假设只有一次点击绑定(只点击一次),您就不应该看到原始代码出现问题:

$('#link1').one('click', function() {
      $('#alt_link1').show();
      $('#link1').hide();
      $('#link2').hide();
      $('#link3').show();
 if ( $("#link1").is(':hidden') && $("#link2").is(':hidden') ) {
    $('#link3').one('click', function() {
    ..... }
 }
});

答案 1 :(得分:0)

如果没有链接事件处理程序(如果没有为link3附加事件处理程序),则立即评估if(如果正文,则引用它们的注释)如果您稍后更改了link1和link2的状态,除非再次执行,否则不会影响第二个代码段的结果