Вот, допустим, простой код:
$('[data-modal]').on('click', function() {
// Если есть на странице модальное окно - открываем его
if( $($(this).attr('data-modal')).length ) {
show_modal( $(this).attr('data-modal') );
} else {
// Если нету - загружаем по AJAX и открываем
var data_modal_rpl = $(this).attr('data-modal').replace('#', '');
$('body').load('/ajax/load/'+data_modal_rpl+'.php');
show_modal( $(this).attr('data-modal') );
}
return false;
});
// А тут мы уже закрываем модальное окошко при нажатии на определенные кнопки.
$('.modal_close, .modal_close_bg').on('click', function() {
hide_modal();
return false;
});
Вот собственно проблема в том, что, в данном случае, код по закрытию окошек обрабатывает только те кнопки, которые уже есть на странице. А те, что подгружены по AJAX - нет.
Это можно как-то исправить?
Все это дело в $(document).ready();
Я первый раз, когда наткнулся на эту проблему, тоже долго думал, почему не хочет клик обрабатывать. А потом доперло, что событие то было навешано до того, как появились новые элементы!
Тогда еще существовал метод live()
, который уже deprecated
.
Вместо него теперь метод on()
, но конструкция чуть сложнее выглядит. Объясню на примере:
Допустим у нас есть документ со структурой:
<div class='container'>
<a href='page'>link</a>
</div>
В который мы будем добавлять новые элементы (не важно как мы их добавляем):
$('button').on('click', function() {
$('.container').append("<a href='page'>link</a>");
});
Собственно остался вопрос: как правильно повесить событие, чтобы и на уже имеющиеся элементы стояло событие, и на новые добавлялось?
Обратимся в документацию по методу on()
, и видим такую вещь:
$('.container').on('click', 'a', function(){
...
});
Т.е. что произошло: мы задали во втором параметре тот селектор, на который хотим добавить событие. А в функции $()
указываем, где будет происходить "поиск" селектора, который указан во втором параметре.
Кстати, очень короткий пример, как может работать on
.
<div id="wrapper">
<div id="test">Test</div>
</div>
jQuery:
$('#wrapper').on('click','p',function(){
alert('Ok!');
});
$('#test').append('<p>New Paragraph</p>');
css:
p { cursor: pointer; }
// А тут мы уже закрываем модальное окошко при нажатии на определенные кнопки.
$(document).on('click','.modal_close, .modal_close_bg', function() {
hide_modal();
return false;
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите есть возможность после перезагрузки страницы повторно использовать значение поля input? те
Я новичокПисал программу пару недель, сейчас обнаружил, что основной файл проекта это Program
Есть такой код но я не могу понять зачем тут нужен я гуглил и так и не понял что делает: [Conditional("DEBUG")] ,ссылка от куда я брал код https://docsmicrosoft