2010-03-06 3 views
2

jQuery를 사용하여 페이지의 각 텍스트 상자에 자리 표시자를 추가하고 있습니다. $ (document) .ready()를 사용하고 placeholder 속성을 가진 모든 요소를 ​​찾아서 그 요소에 이벤트를 추가하면서 반복 할 수 있습니다. 그러나 이는 사용자가 jQuery 코드 전에 텍스트 상자를 클릭 할 수 있음을 의미합니다. 은 적용되다.jQuery는 각 요소가로드 될 때 코드를 적용합니다.

그래서 각 텍스트 상자가있는 코드를 적용하고 싶습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까? 나는 jQuerys 이벤트 핸들링을 어지럽 혀왔다. 그러나 나는 그것을 작동시킬 수 없다.

미리 감사드립니다.

+0

이벤트 처리기가 적용될 때까지 적절한로드 표시기와 함께 텍스트 상자를 비활성화 상태로 유지할 수 없습니까? – karim79

답변

1

Live Query plugin를 살펴 보자 :

라이브 쿼리도있다이 때 요소에 대한 새로운 요소와 다른 기능 (콜백)과 일치 불 함수 (콜백) 할 수있는 능력 더 이상 일치하지 않습니다. 이 은 궁극적 인 유연성을 제공하고 언급하지 않은 사용 사례를 제공합니다. 예를 들어 다음 코드는 라이브 쿼리를 사용하여 jQuery 호버 도우미 메서드를 구현하고 요소가 더 이상 일치하지 않을 때이를 제거합니다.

$('li').livequery(function() { 
    // use the helper function hover to bind a mouseover and mouseout event 
    $(this) .hover(function() { 
    $(this).addClass('hover'); 
    }, function() { 
    $(this).removeClass('hover'); 
    }); 
}, function() { 
    // unbind the mouseover and mouseout events 
    $(this).unbind('mouseover').unbind('mouseout'); 
}); 
+0

라이브 쿼리를 사용하지 않았지만 (소스를 보지 못했습니다.) 고주파수 타이머를 사용하여 새 요소를 확인한 경우 DOM 준비 및 콜백보다 더 유용하지 않습니다. 자바 스크립트 실행은 스레드가 유휴 상태가 될 때까지 타이머가 기다려야하는 동일한 스레드를 공유합니다. –

+0

@Andy Live Query는 20ms마다 새로운 요소를 확인합니다. 그러나 네이티브 콜백이 없기 때문에 탈출 할 수있는 방법이 없습니다. 그래서 기본적으로 이건 아무것도 아닙니다. – cletus

0
수단을 통해

하지 우아한 솔루션,하지만 솔루션은 그럼에도 불구하고 각 텍스트 상자 후 스크립트 태그를 추가하는 것입니다 :

<input type="text" id="input_1" /> 
<script type="text/javascript"> 
    $("#input_1").click(function() 
    { 
     // ... 
    }); 
</script> 

당신도 같은 콜백 함수를 선언 할 수 변수를 조금 짧게 설정하십시오.

관련 문제