У меня есть страница с различными ссылками, каждая из которых имеет класс .post-link
.Ориентация на конкретную ссылку, которую пользователь нажимает
В следующей функции я бы хотел, чтобы линия $(this).html('loading...');
предназначалась для целевого .post-link
div, который нажал. Как я могу это сделать? Я чувствую, что должен создать какую-то переменную, но я немного потерян. Любая помощь будет оценена по достоинству.
$('.post-link').click(function(e) {
e.preventDefault();
var post_id = $(this).attr('rel');
var ajaxURL = site.ajaxurl;
function projectShow() {
$.ajax({
type: 'POST',
cache: false,
url: ajaxURL,
data: {'action': 'load-content', post_id: post_id },
beforeSend: function() {
$('#project-wrapper').addClass('activated');
$(this).html('loading...'); <--line in question
},
success: function(response) {
$('#project-container').html(response);
$('.post-container').addClass('fadeInUp');
$('.close-button').addClass('fadeOutDown');
$('#project-wrapper .entry-title').shuffleLetters();
return false;
}
});
}
Редактировать
Вот как мой HTML настроен:
<a class="post-link"><img src="image.jpg"></a>
Используя решение Александра, на "загрузка ..." текст появляется как это:
<a class="post-link"><img src="image.jpg">loading...</img></a>
Есть ли способ сделать это таким?
<a class="post-link"><span>loading...</span><img src="image.jpg"></img></a>
Конечно, учитывая, что я обернуть текст в span
теги?
Обновление
$('.post-link').click(function(e) {
e.preventDefault();
var post_id = $(this).attr('rel'),
ajaxURL = site.ajaxurl;
function projectShow() {
$.ajax({
type: 'POST',
cache: false,
url: ajaxURL,
data: {'action': 'load-content', post_id: post_id },
beforeSend: function() {
$('#project-wrapper').addClass('activated');
$('<span class="loading">loading...</span>').insertBefore($(e.currentTarget).find('img'));
},
success: function(response) {
$('.loading').remove();
$('#project-container').html(response);
$('.post-container').addClass('fadeInUp');
$('.close-button').addClass('fadeOutDown');
$('#project-wrapper .entry-title').shuffleLetters();
return false;
}
});
}
if ($(window).scrollTop() != 0) {
projectShow();
$('html, body').animate({
scrollTop : 0
},100);
} else {
projectShow();
}
});
Сторона заметок; У вас есть return false внутри обработчика 'success:'. Возвращаемые значения ничего не сделают. –
Еще одна заметка: где код, вызывающий 'projectShow'? Объявлять его снова и снова внутри обработчика щелчка «не правильно» :) –
Ваш HTML означает, что у вас есть '.post-link' на теге' A', но в комментариях вы говорите, что это изображение. – Killah