g0d*_*3ss 4 ajax jquery load priority-queue
嗨,我有一个jquery内容动画,除了内容加载之外,其他所有功能都正常。
$(function() {
var newHash = "",
$mainContent = $("#main_content"),
$pageWrap = $(".big_col"),
$main_menu = $("a.main_menu"),
baseHeight = 0,
$el;
$pageWrap.height($pageWrap.height());
baseHeight = $pageWrap.height() - $mainContent.height();
$("body").delegate("a.main_menu", "click", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function(){
newHash = window.location.hash.substring(1);
if (newHash) {
$mainContent
.fadeOut(200, function() {
$mainContent.hide(function() {
$(".loader").show();
var page = newHash.replace(/\..+$/, '');
var page = page.replace(/!/, '');
var data = 'page=' + page;
$.ajax({
url: "main_content/action.php",
type: "POST",
data: data + "&request=ajax",
cache: false,
success: function (html) {
$mainContent.html(html);
$("#main_content").ready(function() {
//var loaded = 0;
$(".loader").hide();
_gaq.push(['_trackPageview', '/it_'+page]);
$mainContent.fadeIn(200, function() {
$pageWrap.animate({
height: baseHeight + $mainContent.height() + "px"
}, 300);
});
$main_menu.removeClass('current');
$('a[href="#' + newHash + '"]').addClass('current');
return false
});
//});
}
});
});
});
};
});
$(window).trigger('hashchange');
Run Code Online (Sandbox Code Playgroud)
});
这是代码,我尝试了我在堆栈溢出和其他站点上阅读的几乎所有内容,但似乎没有任何效果(您在粘贴的代码中看到的.ready只是我尝试的最后一件事)我尝试了.load,bind load ,实时加载,img .lenght,.ready都可以选择图像或整个div,但似乎仍然无济于事。
有什么建议么?谢谢
编辑的事情是,没有任何函数触发器,脚本可以正常工作。如果我使用这些触发器中的任何一个(.ready除外,但它没有执行应有的操作),脚本将在该触发器处停止(我将加载程序隐藏在其中),它不会继续进行下去。
好吧,我整理出来。问题是我以为jquery很聪明,以为“好吧,这个伙伴有一个功能,可以在加载图像时进行拍摄。即使内容div中没有图像,OFC也会继续运行”。不幸的是,如果您编写类似
$("#mydiv img").on('load', function(){
alert("images loaded");
});
Run Code Online (Sandbox Code Playgroud)
警报只会触发如果有在里面#mydiv和图像,如果图像已被加载。如果#mydiv仅包含文本,则该函数也不会被触发。我通过添加解决
if ($("#main_content").find("img").length > 0) {
$("#main_content img").on('load', function() {
Run Code Online (Sandbox Code Playgroud)
否则普通的ajax加载功能。
感谢您的答复