JQuery UI에서 슬라이더의 slide
및 change
이벤트에서 여러 슬라이더를 동시에 업데이트하려고합니다.JQuery UI 반응 슬라이더 (슬라이더 변경시 동시에 다중 슬라이더 업데이트)
$(function() {
var totalSliders = 0;
$(".slider").each(function() {
var value = parseInt($(this).text(), 10);
$(this).empty().slider({
value: value,
range: "min",
animate: true,
orientation: "horizontal",
slide: updateSliders,
change: updateSliders
});
totalSliders++;
});
function updateSliders(event, ui) {
var activeSlider = this;
$(".slider").slider("value", $(activeSlider).slider("value"));
};
$("#update").click(function() {
$(".slider").slider("value", 10);
return false;
});
});
이 슬라이더로 slider
의 클래스와 모든 전환에 성공 :
나는 다음과 같은 코드가 있습니다. 나는 슬라이더를 이동 할 때마다 그러나, 나는 다음과 같은 오류가 발생합니다 : updateSliders(event, ui)
의 다음 구현이 잘 작동
function updateSliders(event, ui) {
var activeSlider = this;
$(".slider").not(activeSlider).slider("value", $(activeSlider).slider("value"));
};
:
Uncaught RangeError: Maximum call stack size exceeded
는 또한 updateSliders
의 다음 구현을 시도했습니다
function updateSliders(event, ui) {
console.log($(this).slider("value"));
};
질문 :
어떻게 피할 수 있습니까? 최대 호출 스택 크기 오류? 모든 슬라이더가 동시에 업데이트되기를 바랍니다.
편집 : 그 차이를 만드는 경우
가 난 단지, slider
의 클래스와 페이지의 세 가지 요소가있다.
아주 좋습니다! 또한'$ (activeSlider) .slider ("value")'가'ui.value'로 최적화 될 수 있음을 발견했습니다. – user1834646
괜찮 으면'! event.originalEvent'를 설명해 주시겠습니까? 직관적이지 않은 것처럼 보입니다. "원래 이벤트가 아닌 경우 반환하십시오." – user1834646
jQuery에서 가져온 "event"객체는 이벤트가 발생할 때 브라우저가 생성하는 "실제"이벤트 객체가 아닙니다. 래퍼입니다. 해당 래퍼 객체의 "originalEvent"속성을 사용하면 기본 브라우저 이벤트에 액세스 할 수 있습니다. 그러한 기본 이벤트가 없으면 슬라이더에 대한 프로그래밍 방식의 업데이트 (즉, JavaScript에서 슬라이더의 "값"설정)로 인해 "변경"핸들러가 호출되고 있음을 유추 할 수 있습니다. 이해가 되니? – Pointy