내 자체 자바 스크립트 & jquery를 가르치고 있습니다.이 말은 낮은 이마의 질문 일 수도 있고, 지나치게 많은 사람이 코드를 통과 할 수도 있지만, 의견을 기다리고 있습니다. . 나는 주변을 둘러 보았고 내 질문에 깔끔하게 다룰 수있는 것처럼 보이는 실을 찾지 못했습니다.목록에서 아코디언 메뉴를 만들려고 시도합니다. - jquery indexhibit
메신저 cms indexhibit (새로운 태그를 만들 수 없습니다!)를 사용하고 생성 한 메뉴 목록에서 아코디언 스타일 메뉴를 만들려고합니다. 필자는 기본적으로 작업이 끝난 후에 기존 작업을 수정하지만 .click과 .toggle 사이의 충돌과 if 문을 혼란스럽게하는 의심의 여지가있는 몇 가지 단점이 있습니다.
기본적으로 처음부터 다시 시작하여 다시 할 수 있습니다. a) 내 실수에서 배우십시오. b) 무슨 일이 일어나고 있는지 이해합니다. 여기에서 어디로 가야할지 또는 문제를 해결하는 방법을 알지 못해서 지금 문제가 발생했습니다.
누구나 문서 머리글의 스크립트가 어떻게 작동하는지 신속하게 분석 할 수 있습니까? 갈등의 본질에 대한 통찰력 Im Im seeing과 그들을 해결하기 위해 어떤 접근법이 필요할 수 있습니까? 새로 시작할 계획이라면 어떻게하면 될까요? 여기
행동 (사마귀 및 모든)에서 볼 수있는 테스트입니다 :<script type='text/javascript'> //im not entirely clear as to what this achieves
path = 'path/to/script/';
$(document).ready(function() {
setTimeout('move_up()', 1);
expandingMenu(0);
expandingMenu(1);
expandingMenu(2);
expandingMenu(3);
expandingMenu(4);
//etc
});
</script>
생성 된 목록 :
이 스크립트는 문서 헤드에 들어가는 http://stillstatic.nfshost.com/
<ul>
<li class='section-title active_menu'>blogs</li>
<li><a class="active" href='#' onclick="do_click();">3</a></li>
</ul>
<ul> //this menu section dose not have a label: class .section-title
<li><a href='#' onclick="do_click();">1</a></li>
<li><a href='#' onclick="do_click();">2</a></li>
</ul>
<ul> //this menu section is not the 'active menu' this is achieved by the jquery script
<li class='section-title'>writing</li>
<li><a href='#' onclick="do_click();">4</a></li>
<li><a href='#' onclick="do_click();">5</a></li>
</ul>
외부 스크립트의 고기 : 네 말이 맞아
function expandingMenu(num) {
var speed = 500;
var menu_title = $("#menu ul").eq(num).children(":first"); // ie. first child be the title with the class .section-title unless the user turned it off
var menu_items = $("#menu ul").eq(num).children().filter(function (index) { return index > 0; }); // ie. any li NOT in position 0, below li.section-title
if (menu_items.is(".active") == true) {
menu_title.addClass("active_menu"); //Add a class to the active list so we can style it.
}
if (menu_title.is(".section-title") == true){ // this if prevents interference with users who turn off the section titling
if ((menu_items.is(".active") == false) && (menu_items.is(":visible")) ) {
menu_items.hide(0);// first we hide the inactive exhibits
}
$('li').click(function(){
if ((menu_title.is(":visible") == true) ){
menu_items.hide(speed);
}
if ((menu_items.is(":hidden") == true) && ((''))){// ?! without this EMPTY second condition things break down??? hu?. . .
menu_items.show(speed);
}
})
menu_title.css({cursor:"pointer"}).toggle(// add click functions + pointer to menu_title
function() {
menu_items.show(speed);//Open it up
},
function() {
// this function could even be empty but without a pointless 'if' things get really weird
if (menu_items.is(".xx"))
menu_items.hide(speed); //Take the menu item off of active duty!
}
)
}
}
다른 사람이 CMS의 포럼에 남아있는 비트 좋은 아코디언 플러그인을 가지고있다. 현재 나의 예제는 '활성'(스타일 보라색)이 닫힐 때 이상하게 작동합니다. .click 및 .toggle 처리기가 실행 중이지만 해결 방법을 모르겠다 고 가정합니다. .toggle을 제거하려고 시도했습니다. 클릭 한 번으로 클릭 한 것뿐만 아니라 모든 요소에 영향을주는 것 같습니다. 그러나 완전히 혼란 스럽지만 .click 이벤트에서 두 번째 (빈) 조건부가 필요하고 비어있을 수있는 두 번째 토글 명령이 필요합니다. 분명히이 코드는 backflips를하고 있으며 더 깨끗한 방법이 있습니다.보고에 대한 많은 감사 - BTW – orionrush
단, 나는 당신의 제안을 이해하지 못하는거야 - 내가 일을 읽고 있어요으로 expandingMenu (0) 준비 문서에 - 그리고 그것은 외부에서로드 expandingMenu 함수를 호출합니다. 이 두 함수가 어떻게 작동하는지 명확히 알 수는 없지만 메뉴 (0)는 외부 스크립트에 메뉴 순서 num을 전달합니다. 그러나 왜 필요한지 확실하지 않습니다. 전혀 필요하지 않다는 말씀인가요? 왜 누군가가 그러한 접근 방식을 취했습니까? – orionrush
동의합니다. 불필요한 것처럼 보입니다. 그들의 시작 표시는 문서 및 CSS에 의해 처리되어야합니다. 나는 그저 당신에게 그것이 무엇을하고 있었는지 알려주고있었습니다 - 그것은 완전히 불필요하게 보입니다. –