jQuery : $ (). click (fn) 대 $ (). bind ( 'click', fn);


115

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

$().click(fn)

bind 방법 사용과 비교

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

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


클릭에도 선택적 데이터 매개 변수가있는 것 같습니다. 작동 방식에 차이가 있는지 아는 사람 있나요? 출처 : api.jquery.com/click
Nick Udell

답변:


137

그만한 가치는 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)

6
True — click()기본적으로 약어입니다 bind('click')(또는 오늘날에는 실제로를 호출합니다 on('click'). 내가보기에 on('click')직접 사용하여 추가 함수 호출을 저장하는 것이 좋습니다.
Nix

그것들은 똑같지 만 bind () 당신이 말했듯이, 나는 사용이 호버링하고 클릭 할 때 어떤 일이 일어나기를 원합니다 . 예제는 아래의 stackoverflow.com/a/519455/292408을 참조하십시오 . 물론 하나의 이벤트에만 바인딩 할 수 있습니다 (예 : '클릭').
Elijah Lynn

98

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

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

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

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

20
+1 여러 이벤트를 바인딩하는 것은 나에게 뉴스이며 아마도 매우 유용 할 것입니다.
cletus

7

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


1

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

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


1

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

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

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


0

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

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


0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.