繁体   English   中英

如何在一个ajax函数完成之前加载jquery函数

[英]how to make the jquery function load before one ajax function finish

如何在上一个功能完成其功能之前触发一个事件?

我有以下AJAX代码:

var BrainyFilter = {
    //...
    init: function (opts) {},
    changeTotalNumbers: function (data) {
        jQuery(BrainyFilter.filterFormId).find('.bf-count').remove();
        jQuery(BrainyFilter.filterFormId).find('option span').remove();
        jQuery(BrainyFilter.filterFormId).find('select').removeAttr('disabled');
        jQuery('.bf-attr-filter').not('#bf-price-container').find('input, option')
            .attr('disabled', 'disabled')
            .parents('.bf-attr-filter')
            .addClass('bf-disabled');

        if (data && data.length) {
            for (var i = 0; i < data.length; i++) {
                jQuery('.bf-attr-' + data[i].id + ' .bf-attr-val').each(function (ii, v) {
                    if (jQuery(v).text() == data[i].val) {
                        var parent = jQuery(v).parents('.bf-attr-filter').eq(0);
                        var isOption = jQuery(v).prop('tagName') == 'OPTION';
                        var selected = false;
                        if (isOption) {
                            jQuery(v).removeAttr('disabled');
                            selected = jQuery(v)[0].selected;
                        } else {
                            parent.find('input').removeAttr('disabled');
                            selected = parent.find('input')[0].checked;
                        }
                        parent.removeClass('bf-disabled');
                        if (!selected) {
                            if (!isOption) {
                                parent.find('.bf-cell').last().append('<span class="bf-count">' + data[i].c + '</span>');
                            } else {
                                jQuery(v).append('<span> (' + data[i].c + ')</span>');
                            }
                        }
                    }
                });
            }
            jQuery('.bf-attr-filter input[type=checkbox]').filter(':checked')
                .parents('.bf-attr-block').find('.bf-count').each(function (i, v) {
                var t = '+' + jQuery(v).text();
                jQuery(v).text(t);
            });
            // since opencart standard filters use logical OR, all the filter groups
            // should have '+' if any filter was selected
            if (jQuery('.bf-opencart-filters input[type=checkbox]:checked').size()) {
                jQuery('.bf-opencart-filters .bf-count').each(function (i, v) {
                    var t = '+' + jQuery(v).text().replace('+', '');
                    jQuery(v).text(t);
                });
            }
        }

        // disable select box if it hasn't any active option
        jQuery(BrainyFilter.filterFormId).find('select').each(function (i, v) {
            if (jQuery(v).find('option').not('.bf-default,[disabled]').size() == 0) {
                jQuery(v).attr('disabled', 'true');
            }
        });
    },
    //...
} // close the BrainyFilter

我还运行另一个jQuery文件,以使用$('.bf-count').text()获得bf-count值。 页面加载时, bf-count值为空。 由于上面的代码注入了bf-count ,因此我需要等待它完成for循环才能获取bf-count值。

解决此问题的最佳方法是什么?

在不知道第二个js文件如何加载的情况下,我只能给您一个大概的建议。

如果要在页面完全加载运行第二个js文件代码,可以将代码包装在:

jQuery(window).load(function(){
    //your code here. runs after the page is fully loaded 
});

jQuery文档: http : //api.jquery.com/load-event/

“将加载事件和所有子元素完全加载后,会将其发送到元素。可以将该事件发送到与URL关联的任何元素:图像,脚本,框架,iframe和窗口对象。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM