2

좋아 다른 결과를보고, 그래서 매우 비슷한 질문은 여기 jQuery를 UI 슬라이더 변화와 슬라이드 이벤트는

jQuery UI Slider - Value returned from 'slide' event on release is different from 'change' value

을 요청했다하지만 대답은 내 의견에 불만족했다. 여기 내 자바 스크립트 코드 : http://jsfiddle.net/AsDZJ/4/

function slideVal() { 
    var number = $("#number_slider").slider("value"); 
    $("#number_field").append('Slide: ' + number + '<br/>'); 
} 

function changeVal() { 
    var number = $("#number_slider").slider("value"); 
    $("#number_field").append('Change: ' + number + '<br/>'); 
} 

$(function() { 
    $("#number_slider").slider({ 
     min: 1, 
     max: 10, 
     change: changeVal, 
     slide: slideVal 
    }); 

    $("#number_slider").slider("value", 5); 
}); 

문제는 슬라이더가 변화 핸들러가 호출 될 때 사이의 서로 다른 값을보고하고, 슬라이드 핸들러가 호출 될 때이다.

지금, 다른 문제는 익명 함수를 선언하는 경우, 당신은 단순히과 같이, ui.value를 사용할 수 있음을 지적한다 :

$("#number_slider").slider({ 
    min: 1, 
    max: 10, 
    change: function(event, ui) { 
     $("#number_field").append('Change: ' + ui.value + '<br/>'); 
    } 
}); 

이 더 일관성있는 결과를 제공 않습니다,하지만 의미있는 경우 그, 내 경우처럼 이벤트가 바뀔 때마다 수행해야 할 복잡한 논리가 많아 코드를 반복해야합니다. 또한 계산에는 여러 슬라이더의 슬라이더 값이 포함됩니다.

명시 적으로 선언 된 함수에서 올바른 값에 액세스하려면 어떻게합니까? jQuery UI 버그?

감사

+0

잘 익명 콜백을 사용하는 함수 이름을 전달 초기화 할 때 당신은 여전히 ​​매개 변수와 전역 함수를 정의 할 수 있습니다, 여기에 하나 개의 솔루션입니다. 나에게는 꽤 어리석은 것처럼 보입니다. 아마도 누군가 더 나은 대답을 줄 수 있습니다. 두 범위에서 사용할 수있는 변수를 설정했습니다. 익명 이벤트 처리기 함수 내에서 먼저 'ui.value'를 사용하여 적절한'전역 '변수를 설정 한 다음 계산 논리를 처리하는 함수를 호출합니다. http://jsfiddle.net/AsDZJ/6/ – Sibicle

+0

안녕하세요, 이것이 도움이 될지 모르겠지만 사용 중지 이벤트를 사용하고 변경 이벤트와 결과를 교차 시키도록하십시오. 나는 변화의 최종 가치가 슬라이드 이벤트가 아니라 정지 이벤트 값이어야한다고 생각하기 때문에 이것을 말하고 있습니다. – joao

답변

0

슬라이더 그냥 대신

function slideVal(e, ui) { 
    var number = ui.value; 
    $("#number_field").append('Slide: ' + number + '<br/>'); 
} 

function changeVal(e, ui) { 
    var number = ui.value; 
    $("#number_field").append('Change: ' + number + '<br/>'); 
} 

$(function() { 
    $("#number_slider").slider({ 
     min: 1, 
     max: 10, 
     change: changeVal, 
     slide: slideVal 
    }); 

    $("#number_slider").slider("value", 5); 
}); 
관련 문제