2012-02-18 2 views
0

슬라이더를 아래로 잡고 끌면 div 컬렉션을 반복하는 jquery 슬라이더를 만듭니다. handleSlider()가 호출됩니다. 슬라이더에서 임의의 점을 클릭하면 함수가 호출되지 않습니다. 나는 운이없는 다른 두 가지 이벤트 유형을 사용하려고했습니다. 슬라이딩하지 않고 "사용자가 클릭/점프 할 때"에 대한 이벤트 핸들러가 있습니까?점프/클릭을위한 jQuery/jQuery UI 슬라이더 이벤트. 함수가 실행되지 않습니다.

$("#video_seek").slider({ 
     range: "max", 
     step: 1, 
     slide: function(event, ui) { 
     handleSlider(); 
     } 
    }); 
$("#video_seek").slider({ stop: function(event, ui) {handleSlider();}}); 
$("#video_seek").slider({ change: function(event, ui) {handleSlider();}}); 
+2

나는 (확신 변화가 여기서 일해야 해요 http://jsfiddle.net/zAzvL/). 네가보고있는 행동이 아닌가? –

+0

@AndrewWhitaker 훨씬 더 좋지만 완벽하지는 않아서 기능을 꺼 냈습니다. 슬라이더가 업데이트를 완료하기 전에 기능이 중지되었다고 생각합니다. – JustAnotherDeveloper

+0

'슬라이드'는 마우스를 움직일 때마다 움직입니다. 그게 문제일까요? –

답변

2

나는 귀하의 문제가 구문에 있다고 생각합니다. $를 사용할 때마다 새 jQuery 객체가 만들어집니다. 따라서

$("#video_seek").slider({ 
     range: "max", 
     step: 1, 
     slide: function(event, ui) { 
     handleSlider(); 
     } 
    }); 
//below are not necessarily referring to the original slider, but rather creating new sliders. 
$("#video_seek").slider({ stop: function(event, ui) {handleSlider();}}); 
$("#video_seek").slider({ change: function(event, ui) {handleSlider();}}); 

@Andrew가 구문에서 정확합니다. 이 같은

$("#video_seek").slider({ 
    change: function(event, ui) { 
     handleSlider(); 
    } 
}); 

또는를 : 당신이 필요합니다 모든이 같은 원래의 선언에서 설정할 수있는 '변화'이벤트입니다

$("#video_seek").slider({ 
    change: handleSlider 
}); 

당신이 후 이벤트 핸들러를 연결해야하는 경우 사실,이 같은 수행도

$("#video_seek").bind("slidechange", function(event, ui) { 
    handleSlider(); 
}); 

또는 :

$("#video_seek").bind("slidechange", handleSlider); 

후속 jQuery 객체 생성을 피하고 모두 함께 사용합니다.

var videoSeek = $('#video_seek'); 
videoSeek.slider({ 
    slide: handleSlider 
}); 
//added later on not necessary just for example of doing so 
videoSeek.bind('slidechange', handleSlider); 

function handleSlider(event, ui){ 
    //do stuff 
} 
+0

고마워요! 큰 도움이되었습니다. 나는 그것이 매번 객체를 생성했다는 것을 알지 못했고, 나는 그것을 선택자로 더 많이 취급했다! – JustAnotherDeveloper

+1

다음은 프로그램 메모리에 실제로 도움이되는 추가 팁입니다. 한 번 이상 똑같은 것을 선택하려는 경우 jquery 객체를 javascript var에 저장합니다. var elem = $ ('elem'); 그럼 elem.css ('background', 'red'); elem.hide(); 또는 무엇이든. – Fresheyeball

+0

나는 원리를 보여주기 위해 나의 대답을 편집했다. – Fresheyeball

0
당신은 실제 객체 생성 내부의 이벤트를 설정하거나 나중에 그것들을 결합 할 필요가

...

$("#video_seek").slider({ 
    range: "max", 
    step: 1, 
    slide: function(event, ui) {handleSlider();} 
    stop: function(event, ui) {handleSlider();} 
    change: function(event, ui) {handleSlider();} 
}); 

나 :

$("#video_seek").slider({ 
    range: "max", 
    step: 1, 
}); 

$("#video_seek").bind("slidechange", function(event, ui) { 
    handleSlider(); 
}); 
관련 문제