2010-07-20 4 views
3

멋진 사이클 플러그인으로 실행되는 슬라이드 쇼가 있으며 프로그램에서 버튼을 클릭하면 페이지에 숨겨진 레이어가 표시되고 '일시 중지'명령이 순환됩니다. .jQuery주기 플러그인 - 이상한 행동 일시 중지/재개

일시 정지 명령이 수신
  1. 는,주기가 즉시 순서 (왜?)에서 다시 1 슬라이드로 전환하고, 콜백 후/전 내 충돌하지 않습니다 나는 두 가지 문제가 있어요.

  2. 레이어를 닫은 후 순환하기 위해 'resume'명령을 보냅니다. 슬라이드 쇼는 다시 시작되며 (일시 중지가 있던 첫 번째 슬라이드부터), 슬라이드 쇼가 진행되는 동안에도 사이클이 전/후 콜백을 전혀 호출하지 않습니다.

그래서 내 질문은 생각 : 어떻게 제대로/일시 정지 이상한 행동이 발생하지 않도록 슬라이드 쇼를 재개 할 수 있습니다? (그리고 완전히 혼란스럽지 않게 혼란을 피하기 위해서, 이것은 실제로 나를 위해 잘 작동하는 "멈추다 일시 정지"기능에 관한 것이 아닙니다. :-)

여기 내 cycle() init과 콜백이 있습니다. 기능. (I 수동으로 nextSlide을 추적하고 왜 현재 슬라이드에 대한 기본 값이 콜백의 before/after 제대로 업데이트되지 않기 때문에, 당신은? 부탁드립니다.)

$(document).ready(function() { 
    $('#slideshow').cycle({ 
     fx: 'fade',  // choose your transition type, ex: fade, scrollUp, shuffle, etc... 
     timeout:  4000, // milliseconds between slide transitions (0 to disable auto advance) 
     speed:   1000, // speed of the transition (any valid fx speed value) 
     pause:   1,  // true to enable "pause on hover" 
     delay:   0,  // additional delay (in ms) for first transition (hint: can be negative) 
     slideExpr:  'img', // expression for selecting slides (if something other than all children is required) 
     before:  moveArrow, // function to call when moving to next slide 
     after:  upd, // function to call when moving to next slide 
     fastOnEvent: 'fast', 
    }); 
    }); 

    var nextSlide = 0; 

    function upd(a, b, c) { 
    nextSlide = nextSlide + 1;  // track which slide we're on 
    c = $('#slideshow img').length; 
    if(nextSlide > (c - 1)) nextSlide = 0; // wrap back to 1st 
    } 

    // move indicator showing which slide we're on 
    function moveArrow(a, b, c) { 
    $('#slide-indicator').attr('class', 'c'+nextSlide); 

    $(".clickmap").hide();   // hide other clickmaps 
    $(".clickmap.c"+nextSlide).show(); // show map for this slide 

    return true; 
    } 

감사 this-에 어떤 생각에 대해 -

가장, 에릭

+1

이 문제도 발생합니다. 나는 누군가가 대답하기를 바랍니다. – blackrobot

+0

나는 당신을 위해 일할 수도있는 해킹 된 해결 방법을 알아 냈습니다.하지만 해결 방법을 제대로 얻는 데 도움이 필요합니다. 아그 :-) 당신은 내 질문을 여기에 볼 수 있습니다 : http://stackoverflow.com/questions/3295185/jquery-remove-function-attached-to-div – Eric

+0

나는 점점 가까이 가고 있어요. 나는 문제의 일부로 생각합니다. 맥 파이어 폭스에 어떤 문제가있다. 여기에 아주 간단한 코드로 텍스트 페이지를 설정했습니다. http://themepark.com/eric/ – Eric

답변

0

당신은 일시 정지 명령을 전송하는 코드를 보여주지 않았다. 일시 중지는 슬라이드 쇼를 첫 번째 슬라이드로 재설정하지 않기 때문에 뭔가 잘못되었습니다.

또한 슬라이드 색인을 직접 추적 할 필요가 없습니다. before/after 콜백에 대한 세 번째 인수는 슬라이드 쇼의 내부 상태를 갖는 options 객체입니다. 이 객체에는 currSlide와 slideCount 속성이 있습니다.

+0

팁 주셔서 감사합니다 : currSlide. 나는 이전에 그것을 사용하고 있었고 이상한 결과를 얻고 있었지만 방금 다시 시도 했으므로 지금은 괜찮습니다. 그래서 이전에 실수를했을 수도 있습니다. 또한 더 많은 테스트를 수행하고 진행 상황을 확인했습니다. cycle ('pause')이 호출되면 #slideshow div의 모든 요소가 "top : 0; left : 0; position : absolute; display : none; 불투명도 : 0"으로 설정되고 모든 요소의 Z- 인덱스는 리셋도. (계속) – Eric

+0

이것은 내가 보는 행동 중 일부를 유발합니다. 슬라이드 쇼에 대해 서로 위에 여러 개의 레이어가 있으므로 첫 번째 슬라이드가 다시 나타납니다. #slideshow div 안에는 다른 div (슬라이드 쇼의 일부가 아니지만 거기에 있어야 함)가 있습니다. 따라서 cycle()을 설정할 때만 선택하도록 지시합니다. #slideshow div의 내부에있는 IMG 요소 하지만 '일시 중지'에서는이를 무시하고 모든 것을 다시 설정한다고 생각합니다. – Eric

+0

여기에 몇 가지 다른 일들이 있습니다.이 스레드는 약간 미쳐 가고 있지만, FWIW는 Mac Firefox에서 문제를 발견했습니다. Mac Firefox는 이상한 점을 설명하는 데 도움이 될 것입니다. Mac Firefox에서 http://themepark.com/eric을 사용해보십시오 ... – Eric

3

동일한 문제가 발생하여 일시 중지했다가 다시 시작되지 않았습니다. 라이트 버전을 설치 한 것으로 보입니다. 작동중인 전체/전체 버전이 있습니다.

0

나는 이것이 오래된 질문이라는 것을 알고 있지만, 나는 똑같은 문제가있다. JQuery의 호버 이벤트를 사용하여 슬라이드 쇼를 일시 중지하고 다시 시작할 수있는 자체 함수를 간단히 만들 수있었습니다.

Eric은 몇 가지 의견에서 지적했듯이 관련 문제는 플러그인의 일시 중지 옵션이 슬라이드 쇼를 일시 중지하기 위해 IMG 요소 위에 마우스를 올려 놓을 수 있기 때문에 이미지 위에 페이저 나 기타 장식 요소, 그럼 당신은 뼈 아프다.

$('div#banner-container').hover(function(){ 
    if(!$(this).hasClass('paused')){ 
     $(this).addClass("paused"); 
     $('div#banner').cycle("pause") 
    } 
},function(){ 
    if($(this).hasClass('paused')){ 
     $(this).removeClass("paused"); 
     $('div#banner').cycle("resume") 
    } 
}); 
:

그래서, 나는 내 문제를 해결하기 위해이 코드를 모든 "# 배너 컨테이너"라는 DIV에 내 장식 요소, 배너 (나는 "#banner"이라한다) 및 호출기를 넣고 적용

0

문제는 JQuery Cycle Plugin 버전입니다 : "lite"버전은 일시 중지/다시 시작 명령을 무시합니다. 정식 버전을 사용하면 문제가 해결 될 수 있습니다.

편집 : 죄송합니다, 내가 틀렸어 : 나는 두 버전을 시도했지만 정식 버전을 사용하여 동일한 문제가있었습니다.