$(document).ready(function(){
$(".goods ul li").click(function(){
if ($(".m").html()=="下") {
$(".goods ul").css("height","auto");
$(".m").html("上");
}
else{
$(".goods ul").css("height","42px");
$(".m").html("下");
}
});
});HTML 结构 goods ul li .m效果的 想通过li 更改 ul 的高度。click 已经实现。
修改成mouseover后,当鼠标移到 高度超出42px时 不能使用,因为那个时候.m 是 “上”
网上搜了下 说是这种效果用toggle 简单。不太会使用,最好用.slideToggle。
求指点。

解决方案 »

  1.   

    $(document).ready(function(){
    $(".goods ul li").click(function(){
        if ($(".m").html()=="下") {
            $(".m").html("上");
        }
        else{
            $(".m").html("下");
        }
        $(".goods ul").slideToggle();
    });
    });
      

  2.   

    mouseover时 先把 ul 的高度 变成auto 。同时ul下所有li  都能使用 mouseover 事件。现在是 只能使用一次mouseover事件。 因为使用一次后 变成了 “上”。 
      

  3.   

    贴你的HTML结构出来,要不看得不明确
      

  4.   

    HTML结构。
    <div class="goods">
    <ul><!--height:42px-->
    <li class="m">下</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    </ul>
    </div>
      

  5.   

    你这个结构不适合mouseover,改为mouseenter就行了,而且是对ul添加事件mouseover的话每移动到li上就触发一次,mouseenter的话是进入ul才会触发,在ul的li里面移动不会触发。    $(document).ready(function () {
            $(".goods ul").mouseenter(function () {/////
                if ($(".m").html() == "下") {
                    $(".goods ul").css("height", "auto");
                    $(".m").html("上");
                }
                else {
                    $(".goods ul").css("height", "42px");
                    $(".m").html("下");
                }
            });
        });