如果else在Jquery中不起作用?

如果else在Jquery中不起作用?,jquery,if-statement,Jquery,If Statement,这里是我的Jquery代码: <script> $('.smenu li').hover(function() { var lid = $(this).find('li').attr('id'); closeAll(); //show perticular div if(lid == "d1")

这里是我的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>

onmouse-over-div标记未更改。为什么?

如果else语句只是javascript,那么与jquery无关。它总是有效的。如果它不符合您的期望,则代码逻辑中的某些操作是错误的。

可能是:

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>
但这不是你的结构。您没有嵌套列表。您需要
#1
元素的ID,因此必须

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

可能这里需要的是
开关。

在悬停事件处理程序中,
这将是一个
li
,因为它附加到
$('.smenu li')
。然后
$(this).find('li')
将在
.smenu li
中找到
li
元素,这些元素可能不存在。

这只是一段代码,不是问题……发布您的HTML。可能是您的选择器不正确。@所有这一切都很明显,但对于你们,我已经更新了我的问题。这是错误的HTML代码段。
  • .smenu
    在哪里?不,它一点也不明显,不起作用也不是一个错误。ya
    警报(lid)
    正在弹出
    未定义
    。为什么它得不到
    id
    attr?@nectar:我的答案中已经描述过了。我知道它(
    find
    )做什么。同样的语法也适用于其他一些jquery代码。我也在使用
    find()
    @蜜糖:看我更新的答案。我希望现在一切都清楚了。
    <div class="smenu">
        <ul>
          <li id="d1">  // #1
              <ul>
                <li id="foo">...</li>  // #2
              </ul>
          <li id="d2">...</li>   // #1
        </ul>
    
    var lid = $(this).attr('id');