我正在使用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
答案 0 :(得分:0)
我很遗憾地说,但是你的代码非常棘手,HTML结构非常错误。
尝试我的热门修复:http://jsfiddle.net/jvLJs/1/
$(toSlideDown + ' a').show();
$(toSlideDown).hide().slideDown('medium');
答案 1 :(得分:-1)
我认为这应该有所帮助,尽管这是一个老问题。我一直有同样的问题,我到处寻找解决方案,认为我的问题出在我的jQuery文件中。然后我看了看我的CSS并找到了问题....基本上jQuery动画如果你已经在你的css对象中声明了转换,那就行了。 这或者至少是解决我问题的原因。