【问题标题】:jquery slideDown only works oncejquery slideDown 只工作一次
【发布时间】:2013-01-10 15:08:49
【问题描述】:

我正在使用 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

【问题讨论】:

  • 把它放在一个 jsfiddle 中并显示你的 html 代码
  • 我编辑了我的评论以在第一段中包含一个
  • 你把它弄得比它应该的要难...我会再看一遍
  • 只是我的 slideDown 代码通常比必要的复杂吗?

标签: jquery slidedown


【解决方案1】:

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

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

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

【讨论】:

  • 我试过了jsfiddle.net/jvLJs 第二次菜单有点乱,但还是没用
  • 控制台出现错误$('.slideshow').cycle({. 好像缺少cycle.js
  • 感谢您的回复。 Cycle.js 用于控制我的图像幻灯片。我没有将它包含在我的 jsfiddle 示例中。但它在我的本地副本上,我在该本地副本中仍然存在相同的问题。我不认为这是相关的。我错了吗?
  • 非常感谢您的修复。现在可以了。我是网络编程的新手,主要是自学 html、css 和 jquery。虽然我接受过使用 javascript 的培训。所以我完全愿意接受反馈。你说我的html结构不对是什么意思?
  • 很高兴为您提供帮助,如果有帮助,请考虑采纳答案,祝您好运! :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多