[javascript] jQuery : $ (). click (fn) 대 $ (). bind ( ‘click’, fn);

jQuery를 사용하여 이벤트 핸들러를 연결할 때 click 메소드 사용에 차이가 있습니까?

$().click(fn)

bind 방법 사용과 비교

$().bind('click',fn);

bind의 선택적 데이터 매개 변수 외에.



답변

그만한 가치는 jQuery 소스에서 :

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

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

그래서 아니, 차이가 없습니다.

$().click(fn)

전화

$().bind('click',fn)


답변

Matthew의 답변에는 +1이 있지만 한 번에 두 개 이상의 이벤트 처리기를 바인딩 할 수도 있음을 언급해야한다고 생각했습니다. bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

다음과 같이 훨씬 깔끔합니다.

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;


답변

두 번째 양식을 사용하여 사용자 지정 이벤트를 바인딩 할 수 있다는 점에서 한 가지 차이점이 있습니다. 그렇지 않으면 동의어로 보입니다. 참조 : jQuery 이벤트 문서


답변

바인드시 한 번만 발생하는 바인드의 [data] 파라미터가 있습니다.

사용자 지정 이벤트를 bind의 첫 번째 매개 변수로 지정할 수도 있습니다.


답변

.click ()이 훨씬 더 논리적이라는 것을 알지만 생각하는 방식이라고 생각합니다.

$('#my_button').click(function() { alert('BOOM!'); });

당신이 얻는 것만 큼 간단하게 보입니다.


답변

Google 크롬이있는 경우 개발자 도구에는 이벤트 리스너 도구가 있으며 이벤트를 감시 할 요소를 선택합니다.

두 가지 방법을 모두 시도하면 동일한 결과가 나오므로 동일합니다.


답변

내가 선호하는 () .bind 때문에과의 인터페이스의 일관성의 .live () . 코드를 더 쉽게 읽을 수있을뿐만 아니라 다른 메서드 대신 한 메서드를 사용하도록 코드 줄을 쉽게 변경할 수 있습니다.