当页面加载时,我正在使用jquery函数触发li元素的单击。它工作正常,但由于我的页面也使用ajax加载,因此在单击页面导航时不会再次触发此事件。现在我尝试在点击时添加相同的事件 - 这不起作用,因为内容尚未准备好。它确实增加了超时,但我的理解是,这是一个相当肮脏的解决方案,考虑到各种互联网速度下的不同加载时间。
我的页面加载功能(有效):
$j(window).load(function(){
$j("div.filter_holder ul li:first").trigger('click');
});
现在我尝试通过选择其ID来点击li元素然后等待触发器直到页面被加载(通过ajax)来实际做同样的事情:
$j( '#nav-menu-item-87' ).click(function() {
$j(window).load(function(){
$j("div.filter_holder ul li:first").trigger('click');
});
});
我完全错了吗?这实际上是否有效?我找不到与这种特殊情况有关的任何事情......:/
谢谢,伙计们!
杰
编辑:在АлександрЛазарев发表评论之后,我已经读了一下自己的一些内容(ajaxSuccess() - http://api.jquery.com/ajaxsuccess/ - 但是没有进一步了解。我根本想不通,如何听取特定的成功消息。它应该只在某个页面被加载时触发(/ portfolio /),这就是我在ajax.js中找到的,与主题一起出现的内容。function loadResource(url) {
"use strict";
var me = $j("nav a[href='"+qode_root+url+"']");
var animationTime = $j('body').hasClass('page_not_loaded') ? 0 : PAGE_TRANSITION_SPEED;
var direction = me.hasClass('up') ? 'up' : 'down';
var direction2 = me.hasClass('left') ? 'left' : 'right';
var exitFinished = false;
$j.ajax({
url: qode_root+url,
dataType: 'html',
async : true,
success: function (text, status, request) {
function insertNewPage () {
//don't slide in until the old page has gone
if (!exitFinished) {
return window.setTimeout(insertNewPage, 100);
}
//slide in new page
slideInNewPage(text, direction, direction2, animationTime, {
oncomplete: function () {
ajaxSetActiveState(me);
}
}, url);
balanceNavArrows();
}
insertNewPage();
firstLoad = false;
//document.location.href = qode_root + '#/' + url;
if (window.history.pushState) {
var pageurl = qode_root + url;
if(pageurl!==window.location){
window.history.pushState({path:pageurl},'',pageurl);
}
if(typeof _gaq !== 'undefined') {
_gaq.push(['_trackPageview', qode_root+url]);
}
} else {
document.location.href = qode_root + '#/' + url;
}
},
error: function () {
},
statusCode: {
404: function() {
alert('Page not found!');
}
}
});
//slide out old page; timeout is a fix beacause of transition delay
slideOutOldPage(content, direction, direction2, animationTime, {
oncomplete: function () {
exitFinished = true;
}
});
if($j('body').hasClass('page_not_loaded')){$j('body').removeClass('page_not_loaded');}
}
有什么想法吗? :/