2012-06-26 2 views
0

: bind()를 사용해서는 안됩니다. 단축키는 어떨까요? 바인딩()의 jQuery API에서

jQuery를 1.7 바와 같이, CSTE 연구진() 메소드 문서로 이벤트 핸들러를 부착하기위한 바람직한 방법이다.

그리고 변화()의 jQuery API에서

:

이 방법은 .bind에 대한 바로 가기 ('변화', 핸들러)입니다.

그러나 bind()에서 말한대로 change()를 사용하지 않는다는 언급은 없습니다.

jQuery 1.7에서 bind() 대신 on()을 사용하면 어떤 실질적인 이점이 있습니까? change()와 비슷한 단축키는 jQuery 1.7에서 bind() 또는 on()을 사용합니까? 궁극적으로 change() 또는 on()을 사용해야합니까?

미리 감사드립니다.

+3

'bind()'는 ** 사용되지 않습니다 ** ** 더 이상 사용되지 않습니다. Deprecated는 "preferred"에 * different *입니다. ['live()'] (http://api.jquery.com/live)는 *** 유일한 *** 이벤트 메서드이며 현재 사용되지 않습니다. ['change()'는'on ('change')'] (https://github.com/jquery/jquery/blob/754bda21cbc5c9044daf7f968fb9b4ffae39e334/src/event.js#L1040-1067)의 별칭이기 때문에' 원한다면 change()'(또는'bind()') (deprecated되지 않기 때문에). – Matt

+1

가능한 중복 (문제의 톤까지) : http://stackoverflow.com/questions/8065305/whats-the-difference-between-on-and-live-or-bind. – VisioN

+0

VisioN에 감사드립니다. 그거였다. – bluehallu

답변

1

shortcut methods (예를 들어 .change()) 단순히 내부적으로 bind 전화 :

jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " + 
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 
"change select submit keydown keypress keyup error contextmenu").split(" "), function(i, name) { 

    // Handle event binding 
    jQuery.fn[ name ] = function(data, fn) { 
     if (fn == null) { 
      fn = data; 
      data = null; 
     } 

     return arguments.length > 0 ? 
      this.bind(name, data, fn) : //Just call `bind` 
      this.trigger(name); 
    }; 
    //... 

그리고 bind 단순히 on 호출

//... 
bind: function(types, data, fn) { 
    return this.on(types, null, data, fn); //Just call `on` 
}, 
//... 

그래서 아주 소폭 빠른 단지 자신을 on 전화를 아마. 실제로는 속도면에서 차이가 없으므로 가장 편한 느낌을 사용하십시오.

+0

하지만 단점은 문자열을 사용하고 있다는 것입니다. 예를 들어, 문자열의 오타 (잘못 철자)하면 오류가 없습니다. – Esailija

+0

@Esailija :하지만 당신의'change' 이벤트 핸들러도 작동하지 않을 것입니다. – Matt

+1

@Matt @ 사소한 단일 변경 처리기보다 일반적인 상황을 의미합니다 ... 그보다 복잡한 프로젝트가 있다면 어떨까요? 핸들러에 무엇이 있는지에 따라 처리기가 처음부터 시작되지 않았는지 또는 핸들러가 아무 것도 수행하지 못하게하는 논리 오류가 있는지를 판별해야합니다. – Esailija

관련 문제