jquery slideDown只能运行一次

时间:2013-01-10 15:08:50

标签: jquery slidedown

我正在使用jquery制作一个下拉菜单。代码在第一次加载时完美运行。但是,slideDown(单击功能的基本部分)每个菜单项不会运行一次以上。这是一个js小提琴示例http://jsfiddle.net/74ser/。任何帮助将非常感激。

$(document).ready(function() {
        $('.options').live('click',function() {
            console.log(this);
            var current = this.innerHTML;
            var list = listOfeverythingBut ("options", this);
            console.log(list);
            var stringA = new Array() ;
            var stringUl = new Array();
            for (var i =0; i < list.length; i++){
                var item ="."+list[i].innerHTML+"Menu";
                if ( $(item).length === 1){
                     stringA.push("ul"+ item ); 
                     stringUl.push(item + " a"); 
                }
            }
            stringA = stringA.toString();
            stringUl = stringUl.toString();
            console.log(stringA); 
            console.log(stringUl); 
            var currentItem = "." + current + "Menu";
            console.log(currentItem);
            if ( $(currentItem).length === 1){
                console.log("inOf"); 
                var toSlideDown = 'UL' + currentItem;
                console.log(toSlideDown); 
                console.log($(toSlideDown));
                $(toSlideDown).slideDown('medium');

            }
            else {
                $(".bottom").slideUp(20);
                $('.homeContent').delay(30).fadeIn(30);
            }           
            $(stringUl).slideUp('medium');
             moveDiv(this);
            $(stringA).removeClass('press');

            $('.options').removeClass('largeMenuStyle');
            $(this).addClass('largeMenuStyle');

            //setTimeout( function(){moveDiv(this)}, 2000); 
        });
});

注意:基本代码位于if ( $(currentItem).length === 1)。我知道它进入if,因为每次运行代码时它都是console.logs'inOf'。即使它具有正确的'toSlideDown'变量,它仍然不会多次使用。

我已经提到过这些论坛主题,但我还没有找到答案。

Jquery only works once per page load - want it work more than once without having to reload page

JQuery click event works only once

2 个答案:

答案 0 :(得分:0)

我很遗憾地说,但是你的代码非常棘手,HTML结构非常错误。

尝试我的热门修复:http://jsfiddle.net/jvLJs/1/

 $(toSlideDown + ' a').show();
 $(toSlideDown).hide().slideDown('medium');

答案 1 :(得分:-1)

我认为这应该有所帮助,尽管这是一个老问题。我一直有同样的问题,我到处寻找解决方案,认为我的问题出在我的jQuery文件中。然后我看了看我的CSS并找到了问题....基本上jQuery动画如果你已经在你的css对象中声明了转换,那就行了。 这或者至少是解决我问题的原因。