【问题标题】:If else is not workin in Jquery? [closed]如果其他在 Jquery 中不起作用? [关闭]
【发布时间】:2011-03-07 05:32:48
【问题描述】:

这是我的 Jquery 代码:

<script>
            $('.smenu li').hover(function() {       
                var lid = $(this).find('li').attr('id'); 
                closeAll(); 
               //show perticular div
                if(lid == "d1")
                    {
                        $('.hbg div#info1').show();
                    }
                else if(lid == "d2")
                    {
                        $('div#info2').show();
                    }
                else if(lid == "d3")
                    {
                        $('div#info3').show();
                    }
            });   

            function closeAll()   
            {   
                $('div#info1').hide();
                $('div#info2').hide();
                $('div#info3').hide();

            } 
          </script>

这是我的信息div-s:

<div class="hbg">
            <div class="solu_info" id="info1">
              //display information
             </div>
            <div class="solu_info" id="info2">
              //display information
             </div>
.....
</div>  

<div class="smenu">
                <ul>
                  <li id="d1"><a href="#"><img src="images/menu_hosp.jpg" border="0"></a></li>
....

鼠标悬停在 div 标签上并没有改变。为什么?

【问题讨论】:

  • 这只是一段代码,不是问题……
  • 发布您的 HTML。可能是您的选择器不正确。
  • @all 这很明显,但对于你们来说,我已经更新了我的问题。
  • 这是错误的 HTML sn-p。 &lt;li&gt; 和 .smenu 在哪里?不,一点也不明显而且不起作用不是错误。

标签: jquery if-statement


【解决方案1】:

if else 语句只是 javascript,与 jquery 无关。它总是有效的。如果它不是你期望它在你的代码逻辑中做的事情是错误的。

【讨论】:

    【解决方案2】:

    也许它必须是:

    var lid = $(this).attr('id');
    

    只需 alert(lid) 并检查它是否包含值(很可能不在您的代码中)。


    您当前的代码在li 元素内获取li 元素的id。


    显然,如果您的代码正确,if-else 将起作用。请记住,您更有可能做错了什么,因为该语言有错误;)


    说真的,您应该先阅读一些教程和文档,然后再在这里发布很多问题。然后你就会知道find() 正在做什么以及$('.smenu li') 正在选择哪些元素。

    更新:

    好的,只为你:

    这是你的 HTML

    <div class="smenu">
        <ul>
          <li id="d1">...</li>   // #1
          <li id="d2">...</li>   // #1
        </ul>
    

    选择器$('.smenu') 将选择我用#1 标记的所有&lt;li&gt;元素。

    当您将.find('li') 应用于此类元素时,它不会尝试在li 元素内找到li 元素,即它会选择我在此处标记为#2 的元素:

    <div class="smenu">
        <ul>
          <li id="d1">  // #1
              <ul>
                <li id="foo">...</li>  // #2
              </ul>
          <li id="d2">...</li>   // #1
        </ul>
    

    但这不是你的结构。您没有嵌套列表。您想要来自 #1 元素的 ID,因此它必须是

    var lid = $(this).attr('id');
    

    【讨论】:

    • ya alert(lid) 正在弹出undefined。为什么它没有得到id attr?
    • @nectar:我的回答中都有描述。
    • 我知道它(find) 是做什么的。相同的语法适用于其他一些 jquery 代码。我也在使用find();
    • @nectar:查看我的更新答案。我希望现在很清楚。
    【解决方案3】:

    在悬停事件处理程序中,this 将成为li,因为它附加到$('.smenu li')。然后$(this).find('li') 会找到li 元素inside .smenu li,这大概是不存在的。

    【讨论】:

      【解决方案4】:

      也许switch 是您需要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-09
        • 2021-09-16
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 2012-08-30
        相关资源
        最近更新 更多