2

我正在使用 jquery 来制作一个向下滑动的菜单。该代码在页面第一次加载时完美运行。但是,slideDown(单击功能的基本部分)对每个菜单项的作用不会超过一次。这是一个 js fiddle 示例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 每次页面加载只工作一次 - 希望它多次工作而无需重新加载页面

JQuery点击事件只工作一次

4

2 回答 2

0

很抱歉,您的代码非常棘手,而且 HTML 结构非常错误。

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

 $(toSlideDown + ' a').show();
 $(toSlideDown).hide().slideDown('medium');
于 2013-01-10T15:12:49.887 回答
-1

我认为这应该会有所帮助,尽管这是一个老问题。我一直有同样的问题,我到处搜索以找到一个解决方案,认为我的问题出在我的 jQuery 文件中。然后我查看了我的 css 并发现了问题......如果您在 css 对象中声明了过渡,则基本上 jQuery 动画不起作用。就是这样,或者至少这就是解决我的问题的原因。

于 2015-08-09T00:11:49.097 回答