0

我试图根据元素是否隐藏来调用一些函数。奇怪的是,相似的条件在两个元素的相同代码中运行良好,保存一个。

我正在做这样的事情:

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

现在点击了链接 1,链接 1 和链接 2 应该被隐藏,链接 3 应该是可见的,它们实际上是,正如我在 Firebug 中看到的那样,但仅在一种情况下,JQuery 检测到条件中的隐藏元素是可见的,可见的也是隐藏的。现在,在我在同一个代码文件中的其余两种情况下,类似的条件都可以正常工作,但奇怪的是,另一种情况却没有。

我尝试以多种不同的方式进行此操作,但均无济于事。我真的坚持这一点。

4

2 回答 2

0

如果链接一和二被隐藏,则立即评估 if (参考您的评论,它们在相同的 if 正文中)如果没有为链接 3 附加事件处理程序,则附加事件处理程序。如果您稍后更改 link1 和 link2 的状态,这不会影响您的第二个片段的结果,除非再次执行

于 2012-09-04T12:56:26.973 回答
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() {
    ..... }
 }
});
于 2012-09-04T12:23:55.007 回答