2010-11-30 3 views
1

아코디언 메뉴를 자동으로 순환 시키려고 노력하고 있으며, 계속 찾는 모든 사항은 지침에 대해 매우 모호합니다. Cycle Plugin을 통해 사이클을 사용할 수 있다고 대답 한 몇 가지 답변을 찾았습니다. 그래서 제가 시도한 바입니다. 나는 제대로 작동 사이클 기능을 얻을 수 없습니다. 내가 올바른 방향으로 나아갈 것인가? 그렇다면 내 코드에서 무엇을 놓쳤는가?자동화 된 아코디언

저는 jQuery에서 매우 새롭습니다. 그래서이 모든 것이 저에게 다소 압도적입니다. 감사. 이것이 당신이 찾고있는 정확하게 경우

<script type="text/javascript" > 
$(document).ready(function(){ 
lastBlock = $("#a1"); 
maxWidth = 380; 
minWidth = 50; 

$("#slide ul li a").hover(
    function(){ 
    $(lastBlock).animate({width: minWidth+"px"}, { queue:false, duration:400 }); 
$(this).animate({width: maxWidth+"px"}, { queue:false, duration:400}); 
lastBlock = this; 
    } 
); 
}); 
$(function() { 
$('#slide').cycle({ 
    fx:  'slideY', 
    easing: 'bounceout', 
    delay: -4000 
}); 
}); 
    </script> 

<div id="slide" class="cycle"> 
<ul> 
    <li> 
    <a id="a1"> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
</ul> 
</div> 
+0

이 아코디언에 대해 이야기하고 있습니까? http : //jqueryui.com/demos/accordion/ ...주기 플러그인 (http://jquery.malsup.com/cycle/)은 이미지를 의미합니다. 정확히 무엇을하려고합니까? – Mottie

+0

또한 알지 못하는 경우에는 누군가에게 자신에게 맞는 메시지가 있음을 알리기 위해'@ {name}'을 사용하십시오. 따라서'@ Fudgey'를 사용하면 그 사람에게 메시지 플래그가 표시됩니다. – Mottie

+0

@ {name}의 팁에 대해 @Fudgey 감사합니다.이 튜토리얼을 아코디언 http://designreviver.com/tutorials/jquery-examples-horizontal-accordion/에 사용 했으므로 이미지를 사용할 수있었습니다. 저는주기 플러그인이 괜찮을 것이라고 이미지를 사용하고 있었기 때문에 생각했습니다. 이 일을 성취하는 더 좋은 방법이 있다면 나는 그것을 시도하는 데 분명히 열릴 것입니다. – Katie

답변

1

그래서 잘 모르겠어요,하지만 난 희망 당신이 당신의 솔루션을 얻을 수 있도록 빠른 솔루션을 썼다 :

HTML

<div id="slide" class="cycle"> 
    <ul> 
     <li> 
      <a id="a1"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a2"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a3"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a4"> 
       <img src="image" /> 
      </a> 
     </li> 
    </ul> 
</div> 

jQuery를

var lastBlock = $("#a1"); 
var maxWidth = 166; 
var minWidth = 35; 
var counter = 0; 
var myInterval = 0; 

$("#slide ul li a").mouseenter(

function() { 
    $(lastBlock).animate({ 
     width: minWidth + "px" 
    }, { 
     queue: false, 
     duration: 400 
    }); 
    $(this).animate({ 
     width: maxWidth + "px" 
    }, { 
     queue: false, 
     duration: 400 
    }); 
    lastBlock = this; 
    clearInterval(myInterval); 
}).mouseleave(function() { 
    myInterval = setInterval(doSomething, 4000); 
}); 

function doSomething() { 
    var i = counter++ % 4 + 1; 
    $("#a" + i).trigger("mouseenter"); 
    $("#a" + i).trigger("mouseleave"); 
} 

myInterval = setInterval(doSomething, 4000); 

따라서이 솔루션에서 간격은 순환하여 이벤트 mouseenter()mouseleave()을 트리거하도록 설정됩니다. 마우스가 요소 위에있는 동안 이미지 순환을 원하지 않을 수 있으므로 간격은 mouseenter()에서 지워지고 mouseleave() 동안 다시 설정하십시오. 리팩토링 될 수있는 혼란스러운 부분은 모듈러스 연산이있는 카운터를 사용하여 이미지를 순환하는 방식입니다. 끝에 <a>에 ID를 추가하면 점차적으로 번호가 변경됩니다.

여기에서 작업하십시오 : http://jsfiddle.net/Ck3aZ/

+0

응답 해 주셔서 대단히 감사합니다. – Katie

+0

나는 여전히 질문이있다 ... 사이클 플러그인 jquery 파일과 jquery 파일을 내 헤더에 연결해야 하나? 나는 지금 거기에 2를 가지고 있고 당신이 예제에서 얻은 멋진 마무리를 얻지 못하는 것 같습니다. – Katie

+0

jquery-1.3.2.min.js 및 jquery.cycle.min.js 맞지 않습니까? – Katie