2010-03-08 2 views
4

내가 더 나은 인라인을 피하기 위해 연습을 코딩 알고 같은 자바 스크립트 :인라인 자바 스크립트 성능

$("#the_image").bind("click",function(){ 
    do_this(true); 
    return false; 
}); 

윌 : 내가 좋아하는 바인딩 JQuery와 클릭 이벤트에 대한 이런 종류의 물건을 전환에 대해 생각하고

<img id="the_image" onclick="do_this(true);return false;"/> 

클릭 이벤트 톤을 묶어도 성능이 저하됩니까? 처음 이벤트를 묶는 데 걸리는 시간은 걱정하지 않지만 클릭과 발생 사이의 응답 시간은 걱정하지 않습니다.

차이가 있다면 무시할 만하지만 나는 많은 기능이 묶여있을 것입니다. 브라우저에서 onclick 특성을 바운드 이벤트와 동일한 방식으로 처리하는지 궁금합니다.

고마워요.

+0

"톤"은 몇 개입니까? –

답변

2

걱정, 여러 항목이없는 성능 저하와 함께, 이벤트

$("#the_image").on("click",function(){ 
    do_this(true); 
    return false; 
}); 

한 경우에 사용합니다.

+2

"여러 항목에 성능이 저하되지 않았습니다."라는 것은 틀림 없습니다. 몇 가지 요소에서 알 수는 없지만 수백 또는 수천 개의 요소에 실시간 이벤트를 추가하면 실적에 영향을 미칠 수 있습니다. 또한 단일 요소에서 실시간 이벤트가 필요한 이유를 알 수 없습니다. (귀하의 예는 고유 한 CSS 선택기의 ID를 사용했습니다.) –

+2

이전 주석을 취소합니다. 분명히 jQuery 팀은 jQuery 1.4로 'live'알고리즘을 최적화 했으므로 'live'를 사용하여 얻은 성능 저하는 거의 사라졌습니다. +1 –

+0

@MikeRobinson 답변을 업데이 트하는 것이 가치가있을 수 있습니다. 명확한 .live 지금은 더 이상 사용되지 않습니다 – Undefined

1

제 작품에서는 의존적이었습니다. 모든 이벤트를 jquery로 옮겼습니다. 그런 다음 FireBug를 사용하여 javascript를 프로파일 링하여 가장 오래 걸리는 것을 확인했습니다. 그런 다음 가장 오래 걸리는 사람들을 최적화했습니다.

극히 일부인 경우 품질 저하가 발생하지 않습니다. 그 수백 또는 수천, 그럼 당신은 수도 있습니다. 자신을 저장

0

차이는 무시할 수 있습니다. 페이지의 많은 항목에 바인딩해야하는 경우 성능이 저하 될 수 있으며 더 높은 수준의 개체에 바인딩하고 포함하는 DIV로 클릭을 바인딩 할 대상 항목 (이미지)을 가로 채기 만하면됩니다. 꼬리표. 그것 이외에, 그것은 잘되어야하며 귀하의 유스 케이스에 따라 구체적으로 달라질 것입니다.

자세한 내용은 자바 스크립트에서 이벤트 버블 링을 살펴보십시오.

+0

고마워, 지금은 jquery이기 때문에 성능 충돌이 올지 궁금하네요, 아니면 내가 동등하게 성능을 다치게합니까 : the_image.onclick = function() { do_this (true); }; 다시 한번 감사드립니다. – Geromey

+0

IE에서는 js 엔진과 렌더링/DOM 엔진이 교차 COM 경계이기 때문에 주로 IE에서 특히 이벤트 수신기의 수가 많습니다. 이 둘의 차이점은 무시할 만하지만 .live를 사용하면 DOM의 상위 항목에 바인딩 할 수 있으므로 이벤트 버블에서이를 잡을 수 있습니다. – Tracker1