У меня есть этот список, который показывает девять сообщений на моей странице. Каждый пост имеет привязанную к нему функцию «like», так что пользователю может нравиться каждый пост и видеть количество понравившихся обновлений. Это достигается простым вызовом ajax.JQuery как функция не работает должным образом
Пользователь может также загрузить больше сообщений, нажав кнопку, чтобы добавить еще девять сообщений через ajax. Это отлично работает, но моя проблема связана с подобной функцией, которая привязана к сообщениям, которые загружаются через функцию загрузки больше.
Эта функция имеет один параметр, который является идентификатором последнего вставленного сообщения (iden). Он принимает все li в ul и создает список с именем $ listItems. Затем он выполняет итерацию над $ listItems, проверяет, является ли идентификатор сообщения меньше, чем последний вставленный, а затем связывает событие click с символом «как» сообщения. Функция вызывается каждый раз, когда вы нажимаете кнопку «загрузить больше».
function likenmore(iden) {
var $listItems = $('ul.statuses').find('li');
var i = 0;
console.log($listItems);
$.each($listItems, function (index, element) {
var id = $(this).attr('class');
if (id < iden)
{
console.log(id);
i++;
$(".likemore" + i).live("click", function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: 'like.php',
data: "id=" +id + "&num=1",
success: function(data) {
$('.hearts' + id).html(data);
}
});
});
}
});
}
Существуют две проблемы с этой функцией.
Когда я нажимаю нагрузку кнопки Дополнительно в первый раз, я могу, как первые восемь из девяти вновь прилагаемых сообщений, но событие щелчка не привязан к девятому и последнему. Если я делаю console.log (id), я вижу, что идентификатор последнего не печатается, событие, хотя оно находится в списке $ listItems, который я уже проверил.
Когда я нажимаю кнопку загрузки больше во второй раз, все сообщения, а не только те, у которых идентификатор ниже последнего вставленного, получает связанное с ним событие click, которое создает двойную проводку, когда кнопка щелкнул. Я не понимаю, почему условие if не работает во второй раз, когда вызывается функция.
пытаются использовать обработчик делегата события. Как говорит Антон в комментарии выше, он устарел. Может быть, это вызывает проблему. –
Привет, спасибо, что ответили. Я изменил на jQuery 1.10.2 и заменил мои живые функции на обработчик событий делегата, но проблема с exet же я все еще там. любые другие предложения? – user1009453
Вы получаете какие-либо ошибки, и делаете ли вы это точно так же, как я это написал? – Anton