jqueryを使ってスライドダウンメニューを作っています。コードは、ページが初めて読み込まれたときに完全に機能します。ただし、slideDown (クリック機能の重要な部分) は、メニュー項目ごとに 1 回しか機能しません。これは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)
. コードを実行するたびに console.logs 'inOf' になるため、if に入ることがわかります。正しい 'toSlideDown' 変数があっても、一度しか機能しません。
これらのフォーラムのトピックについては既に言及しましたが、まだ答えが見つかりません。