【问题标题】:Why won't my conditional statement work?为什么我的条件语句不起作用?
【发布时间】:2011-12-20 18:11:32
【问题描述】:

我在一个 section 元素中有几个 div 元素。当单击某个链接时,我想隐藏 section 元素中的所有 div 并仅淡入 div#one。

一旦 div#one 可见,当有人点击 span 元素时,它应该获取 div#one 和 slideUp 并抓取 div#two 和 slideDown。当 div#two 向下滑动时,我有一个 if 语句来测试它是否可见。如果它是可见的,那么相同的 span 元素现在应该采用 div#two 和 slideUp 并抓取 div#three 和 slideDown。我写的条件语句不起作用。请帮忙!

function hwdbussSlider() {

$('.dropdown').find('a').click(function() {
    $('.hwdbuss').hide();
    $('#services #one').fadeIn(3000);
});



$('#pagi_hwdbuss').find('span:first').click(function() {
    $('#hwdbuss').find('div').removeClass('hwd_visible');
    $('#services #one').slideUp();
    $('#services #two').addClass('hwd_visible').slideDown();
});

if($('#services #two').hasClass('hwd_visible')) {

    $('#pagi_hwdbuss').find('span:first').click(function() {
        $('hwdbuss').find('div').removeClass('hwd_visible');
        $('#services #two').slideUp();
        $('#services #three').addClass('hwd_visible').slideDown();

    });
}

};

【问题讨论】:

  • 您不需要$('#services #two'),您可以使用$('#two') 简化此操作,ID 是唯一的。查找时不需要嵌套。
  • 另外,作为另一个不相关的点。如果您在同一块中多次调用选择器,则使用var myName = $("#whatever"); 将其定义为局部变量,这也将提高性能。
  • $('hwdbuss').find('div').removeClass('hwd_visible'); 错字还是应该是$('#hwdbuss').find('div').removeClass('hwd_visible');

标签: javascript jquery conditional-statements


【解决方案1】:

问题是类是在click事件上添加的,在事件范围内,但是if语句是在hwdbussSlider()范围内执行的,所以实际上不会添加类直到创建了 click

我不太明白你要做什么,所以我不会建议代码,但上一句应该可以帮助你理解为什么它不起作用。

另外,我认为您在最后一次出现 $('hwdbuss').find('div') 时缺少 #

【讨论】:

    【解决方案2】:

    只有在调用 hwdbussSlider() 时才会评估您的 If 语句。您需要将 if 条件放在“span:first”点击回调中

    function hwdbussSlider() {
    
    $('.dropdown').find('a').click(function() {
        $('.hwdbuss').hide();
        $('#services #one').fadeIn(3000);
    });
    
    
    
    $('#pagi_hwdbuss').find('span:first').click(function() {
        $('#hwdbuss').find('div').removeClass('hwd_visible');
        $('#services #one').slideUp();
        $('#services #two').addClass('hwd_visible').slideDown();
    
    
        if($('#services #two').hasClass('hwd_visible')) {
    
            $('#pagi_hwdbuss').find('span:first').click(function() {
                $('hwdbuss').find('div').removeClass('hwd_visible');
                $('#services #two').slideUp();
                $'#services #three').addClass('hwd_visible').slideDown();
    
            });
        }
    
    });
    
    };
    

    【讨论】:

      【解决方案3】:

      阅读后.. 评论.. 重新阅读.. 我认为您的问题是您在元素上滥用了 ID 属性。我怀疑您的元素具有相同的 ID,因此您会看到意想不到的结果。让他们上课。

      我对此假设的推理是您致电 $('.hwdbuss') $('#hwdbuss')$('hwdbuss')

      【讨论】:

      • 不,只是 $('hwdbuss') 上的错字应该是 $('#hwdbuss')
      猜你喜欢
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多