mousemove
- jQuery의 이벤트는 마우스가 움직일 때마다 실행되며 이로 인해 초당 수백 건의 이벤트가 실행될 수 있습니다. 이 코드 스 니펫이 있다고 가정 해 보겠습니다.jQuery의 "mousemove"에서 변수 선언 - 이벤트
$(document).on('mousemove', function(e){
/**
* This piece of code checks if the mouse is within a 50px range
* on either side of the middle of the page.
* If is, it shows a set of elements (contained in the action_dots variable).
*/
var treshold = 50;
var action_dots = $('.branch[open][focus]').children('.branch-line').children('.action-dot');
var opacity = action_dots.css('opacity');
if(e.pageX >= ($(window).width()/2 - treshold) && e.pageX <= ($(window).width()/2 + treshold)){
if(opacity == 0){
action_dots.transition({ opacity: 1 }, 100);
}
}
else{
if(opacity == 1){
action_dots.transition({ opacity: 0 }, 100);
}
}
});
이벤트가 실행될 때마다 이러한 변수를 선언하는 것이 효율적입니까? 선택기와 일치하는 모든 요소를 찾아야하므로 성능에 부담이된다고 생각할 수 있습니다. 아니면 jQuery가 var action_dots
의 내용을 캐시 할 수 있습니까? 동일한 퀘스트가 var opacity
과 함께 동작 점 'opacity
css- 속성을 확인하는 데 적용됩니다.
'전환'대신에 http://api.jquery.com/animate/를 사용하십시오. –
점이 동적으로 추가되지 않으면 단순히'$ (document) .on' 호출 외부에서 action_dots를 선언하기 만하면됩니다. 페이지 준비 시간. 특정 예제가 필요한 경우 전체 JS를 게시하십시오 (JQuery "준비 래퍼"가 누락 된 경우에만 표시 - 표시되지 않음). –
"... jQuery는 어떻게 든 var action_dots의 내용을 캐시 할 수 있습니까?" 아니, 더 높은 범위에 저장하여 직접해야합니다. –