2012-05-08 2 views

답변

1

.on한다. jQuery .one() docs에서 : jQuery를 1.7 도입

번째 두 가지 형태, 셀렉터 아무 일치 여부 핸들러는 이벤트가 위임 소자에서 발생 처음 후에 제거되는 것을 제외하고는() CSTE 연구진하는 동일 아닙니다. 예를 들어 코드가 실행

$("#foo").one("click", function() { 
     alert("This will be displayed only once."); 
    }); 
    $("body").one("click", "#foo", function() { 
     alert("This displays if #foo is the first thing clicked in the body."); 
    }); 

후, ID foo를 가진 요소에 클릭하면 경고를 표시합니다. 이후의 클릭은 아무 것도하지 않습니다.

이것은 양식 $(el).one('click', '.selector', handler)를 사용할 때 live처럼 작동합니다 것을 의미합니다 - 이벤트 핸들러가 el에 바인딩합니다 (DOM에 존재해야한다)하지만 이벤트 핸들러 만에 클릭에 실행됩니다 .selector, 해당 요소가 .one()으로 전화하는 동안 존재하는지 여부에 관계없이

편집 : jQuery의 설명서는 잘못되었습니다. 위의 alert에 따르면

"#foo가 본문에서 처음으로 클릭되면 표시됩니다." 내가 다른 어떤 신체 에 클릭하면, 이벤트 핸들러를 제거 할 것이라고 생각하고 다시 발생하지 않습니다하게

. 이것은 사실이 아닙니다. #foo을 한 번 클릭 할 때까지 이벤트 처리기가 존재합니다.

데모 용은 this fiddle을 참조하십시오.

4

Yes (예)가 : 정확히 같은 방식으로

// added in jQuery 1.7 
// .one(events [, selector] [, data], handler(eventObject)) 
$("div").one("click", "span", function (e) { 
    $(this).hide(); 
}); 
1

$("#to-bind-to").one('event-type', 'delegated-selector', eventFunction); 
관련 문제