2009-02-04 9 views
16

입력 요소가 있고 입력과 함께 change 및 keypress 이벤트를 모두 바인딩하고 싶지만 이벤트 처리 코드는 두 이벤트 모두에서 동일합니다. 동일한 코드를 두 번 쓰는 대신 짧은 방법이 있습니다. 글쎄, 난 방법을 쓸 수 있지만이동일한 이벤트 처리 코드를 jquery의 여러 이벤트에 연결하는 경우

$("#inpt").change(function(){ 
    some code 
}); 

$("#inpt").keypress(function(){ 
    same code 
}); 

을하는 어떤 쉬운 방법이 내가 두 이벤트를 바인딩 할 수있는 방법이 있는지보고 싶어 수 있을까?

답변

39

당신은 방법에 jQuery를 사용할 수 있습니다.

$("#inpt").on("change keypress", function() { 
    code 
}); 
+1

감사합니다. –

+0

jquery [docs] (http://api.jquery.com/bind/)에 따르면 "jQuery 1.7부터 .on() 메서드가 이벤트 핸들러를 문서에 첨부하는 데 선호되는 방법입니다." 그래서 1.7보다 최신 버전의 경우'$ ("inpt")를 사용합니다. ("change keypress", function() { code })' – jbustamovej

+0

@jbustamovej 나는 그것을 업데이트했습니다. – tvanfosson

6

당신은 저장 기능을 모두에 바인딩 할 수 있습니다

var fn = function(){ /*some code*/ }; 
$("#inpt").change(fn).keypress(fn); 
1

'묶음'대신에 '라이브'이벤트를 사용할 수도 있습니다. '라이브'이벤트는 동적으로 생성 된 요소까지도 포함합니다. 은 "특성이 선택기로 시작"을 사용하여 여러 요소에 바인딩,

Kaless1n 마태 복음 (1.7에서 사용되지 않음) : 모든 '입력'요소에 바인딩

var fn = function() { /*some code*/ }; 

$('input[id^="foo_"]').click(fn).keyup(fn).keydown(fn); 

은 'ID는'시작되는 'foo_'와 함께. 예를 들어 onther 요소 및/또는 'name'속성이있는 'id'로 'input'을 변경할 수 있습니다.

관련 문제