2013-07-29 3 views
0

내 페이지에서 JQuery 코드를 사용하여 사용자의 선택을 드롭 다운에서 서버로 보냈습니다. 페이지가 점진적으로 느린 내가 드롭 다운에서 다른 선택을 클릭 할 때마다있어.live()가 페이지 속도를 늦추는 이유는 무엇입니까?

$(".rNameSelect:not(.srchCntnt .rNameSelect)").live("change", function(){ 
     var rName=$(this).val(); 
     $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName)); 
    }); 

:이 같은 .live()를 사용하는 몇 가지 이유! 내가 이것을 이렇게 바꿨을 때 :

$(".rNameSelect:not(.srchCntnt .rNameSelect)").change(function(){ 
     var rName=$(this).val(); 
     $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName)); 
    }); 

문제가 해결되었습니다! .live()은 왜 느린가요? 내가 정말 .live()을 원했는지 .change() 괜찮 았나요?

+2

'.live()'를 사용하지 말 것을 권한다. 1.8 이후로 양보되어졌으며'.on()'이 더 좋다. –

+0

JQuery 1.6을 사용하고있다. – elizabk

답변

1

.live()을 사용하면 트리거처럼 작동하며 스크립트는이 동작이 발생할 때까지 계속 실행해야합니다. 그리고 RAM의 그라데이션이 소모됩니다.

이 경우 .change()을 사용하면 jquery는 기본 자바 스크립트 이벤트에서이 변경을 가정합니다. 그리고 훨씬 더 빨라질 것입니다.

이벤트가 jquery에서 어떻게 작동하는지 더 잘 이해하려면 herehere을보십시오.

0

.live() 메서드는 문서에서 이벤트 처리기를 등록하는 데만 사용되기 때문에 속도가 느립니다. 이벤트는 항상 모든 문서에 위임됩니다. DOM이 깊은 경우 성능에 영향을 줄 수 있습니다.

당신이 원하는 부분에 이벤트 처리기를 설정했기 때문에 .on() 메서드를 사용하십시오.

관련 문제