У меня есть календарь ajax, который меняет месяц при нажатии на некоторые стрелки.По какой-то причине событие click не работает в методе live ().Раньше работал, но сейчас нет по какой-то причине.
Если я заменю live () на click (), это сработает, но мне нужен метод live ().
Допущения
- Я использую последнюю версию jQuery.
- Нет ошибок JS.
- HTML действителен
- Обнаружен селектор ax-btn (длина = 2)
- console.log ('Got this далеко!') Срабатывает корректно.
- console.log ('Sidebar Cal Clicked') не стрельба на всех.
- Работа в среде Wordpress.
- DOCTYPE установлен для HTML5
//ajax calendars
jQuery(document).ready(function($) {
//sidebar
$(function() {
var s = $('#s-calendar'), p = s.closest('.widget');
console.log('Got this far!');
//prevent collapse
p.css('min-height', p.height());
s.find('a.x-btn').live('click', function(e) {
console.log('Sidebar Cal Clicked');
var d = $(this).attr('data-cal-date'), n = $(this).attr('data-nonce');
var url = $(this).attr('data-ajaxurl');
$.ajax({
url:url,
type:'POST',
data:'action=wpcal&sidebar=true&_wpcal_nonce='+n+'&date='+d,
success:function(data) {
s.fadeOut(500, function() {
s.html(data).fadeIn(500);
});
}
});
return false;
});
});
});
ОТВЕТ
Оказывается, другой кусок JS заставлял концерт не работать.Метод live () требует распространения событий для правильной работы.У меня в верхней части кода была небольшая строка JS, которую я иногда нахожу полезной.
$('body a[href=#]').click(function(event) { event.preventDefault(); });
Я использую этот код, чтобы предотвратить переход страницы при щелчке по бесполезным ссылкам.Это завершает распространение на все теги 'A', которые с href = "#" при их нажатии.Я удалил его, и все работает нормально.
Кроме того, несмотря на то, что говорят документы jQuery, при использовании jQuery 1.5.2 метод live () работает после обхода DOM.Я все равно изменил его, чтобы быть в курсе документации.Но это работает!Спасибо за помощь, ребята!