Это часть моего файла HTML;Делегированный обработчик событий не работает
<script type="text/template" id="_profile">
<div class="modalDialog">
<div class="profile">
<div class="box clearfix">
<div class="box-header clearfix">
<span class="box-title l">{% trans 'PROFILE' %}</span>
<a href="#" style="margin-left: 10px;" id="profile_export" class="l"><span class="icon-download"></span>{% trans 'Profile Export' %}</a>
<div class="close-profile icon-cancel-circled r"></div>
</div>
и
$('.profile').on('click', '#profile_export', function (e) {
e.preventDefault();
$.get(root + '/profile/export/', function(resp) {
// DO something
Я посмотрел на некоторые примеры для «делегирования событий в JQuery», так что я писал выше функции. Наверное, это неправильно, потому что, когда я нажимаю, ничего не делает. Он просто помещает #
в конец текущего URL-адреса.
Может ли кто-нибудь сказать мне, что здесь не так? Почему, когда я нажимаю #profile_export
, не вызывает ли запрос «профиль/экспорт /»?
Спасибо
'Там нет никакого смысла делегируя одного элемента, если этот элемент не удаляется или добавляется dynamically.' Правда, но с учетом ОП показал его код генерируется из шаблона, он явно добавляется динамически, и статический обработчик событий здесь не работает. –
@RoryMcCrossan Действительно, мой плохой. – kidwon