如果在Jquery中没有工作?

时间:2010-06-23 09:07:05

标签: jquery if-statement

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

onmouse over div标签没有改变。为什么?

4 个答案:

答案 0 :(得分:8)

if else语句只是javascript,与jquery无关。它总是有效的。如果它不符合您的预期,那么您的代码逻辑就会出错。

答案 1 :(得分:5)

也许必须是:

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

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


您当前的代码获取id元素中li元素的li


显然,如果您的代码是正确的,if-else将会起作用。请记住,由于语言出错,您更有可能做错了;)


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

<强>更新

好的,只为你:

这是您的HTML

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

选择器$('.smenu')将选择我用<li>标记的所有#1元素。

当您将.find('li')应用于此类元素时,它会尝试在li元素中找到li元素,即它会选择我用{{1}标记的元素这里:

#2

但这不是你的结构。您没有嵌套列表。您需要来自<div class="smenu"> <ul> <li id="d1"> // #1 <ul> <li id="foo">...</li> // #2 </ul> <li id="d2">...</li> // #1 </ul> 元素的ID,因此它必须是

#1

答案 2 :(得分:2)

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

答案 3 :(得分:0)

在这里你可能需要switch