Я полагаю, это происходит потому, что, когда вы начинаете отображать изображение в виде HTML-контента, оно загружается, а затем отображается. Вы уже можете загрузить его на свою страницу, например:
<div id="popup">
<div id="spinner"> <!-- Assuming that it has display: none in CSS -->
<center><img src="images/loader.gif" alt="Loading..." /></center>
</div>
<!-- Load the content here. -->
</div>
И ваш сценарий будет выглядеть как
$(function() {
$("li#tabs.popup a").click(function(e) {
$('#popup').find('#spinner')
.show()
.end()
.load('wishlist.php')
.slideDown()
.addClass('active');
$('li#tabs.popup a').removeClass('selected');
$(this).addClass('selected');
e.stopPropagation();
});
});
Sidenote: И вам действительно не нужно писать $('li#tabs')
, просто $('#tabs')
(или, точнее, $('.tabs')
будет делать. Когда вы устанавливаете селектор на li#tabs
, это вызывает Sizzle отфильтровать результат document.getElementById('tabs')
, чтобы увидеть, является ли тэг соответствующего элемента li
.