ajax / jquery - 单击时触发事件,但等待实际触发,直到加载页面

时间:2015-03-11 11:13:59

标签: javascript jquery ajax

当页面加载时,我正在使用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');}

}

有什么想法吗? :/

0 个答案:

没有答案