일부 프로젝트에서 jQuery를 통해 새로운 요소를 추가하고 있으며 약간의 번거로운 문제를 발견했습니다.jQuery로 이벤트 다시 등록
$('span.claim').click(function() {
$(this).parent().html('<span class="unclaim">Unclaim</span>'):
});
$('span.unclaim').click(function() {
$(this).parent().html('<span class="claim">Claim</span>'):
});
그리고 다음과 같은 마크 업 ... 초기 이벤트가 시작 된 후
<ul>
<li><span class="claim">Claim</span></li>
<li><span class="unclaim">Unclaim</span></li>
<li><span class="claim">Claim</span></li>
<li><span class="unclaim">Unclaim</span></li>
</ul>
불행하게도, 후속 이벤트가 처리되지 않습니다 :
는 다음과 같은 고려하십시오.
나는 완전히 구조 조정을하고 .bind()
함수를 사용할 수 있다는 것을 알았지 만, 내 프로젝트의 복잡성 때문에이 모든 것이 실현 가능하지는 않습니다.
익명 함수를 버리지 않고 새 요소를 만든 후에 이벤트를 다시 바인딩하는 방법은 무엇입니까?
$('a.claim').click(function() {
$(this).html('Unclaim').addClass('unclaim').removeClass('claim');
});
$('a.unclaim').click(function() {
$(this).html('Claim').addClass('claim').removeClass('unclaim');
});
옵션 2 : 1 http://docs.jquery.com/Events/live
클릭시 텍스트 및 클래스 이름을 변경하는 대신 새 HTML 요소를 만드는 이유는 무엇입니까? – David
그냥 요소를 만드는 것보다 더 많은 일이 있습니다. 이것은 단지 일어나는 일의 단순한 예가되는 것이지 문자적인 것이 아닙니다. – Skudd