Я добавляю новые элементы через 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()
, но из-за сложности моего проекта это на самом деле не все, что возможно.
Как я могу связать события после того, как будут созданы новые элементы, не отбрасывая анонимные функции, или это даже возможно?
Любая причина для создания новых элементов HTML вместо изменения имени и имени класса при нажатии? – David
Существует гораздо больше, чем просто создание элементов. Это просто предназначалось для простого примера того, что происходит, а не буквального. – Skudd