2

我在 IE7 中收到“对方法或属性访问的意外调用”,而我的脚本在 IE8 中无法运行,我终生无法弄清楚原因。

我一直在 IE 中使用开发人员工具(哇哦!),但这并没有多大帮助。我得到的错误是在 Jquery 中:

SCRIPT65535:对方法或属性访问的意外调用。jquery.js?ver=1.7.1,第 3 行字符 31871

它在 IE9、Safari、FF 和 chrome 中运行良好。

在 Html 页面上,我单击以下链接,该链接将 data-tax 属性的值传递给脚本。你认为它可能与 html5 有什么关系吗?任何指针将不胜感激。

例如,如果您单击布拉德皮特,它应该显示布拉德皮特所在的电影:

<li class="ajaxFilterItem brad-pitt af-actor-6 filter-selected" data-tax="actor=6"><a href="#" class="ajax-filter-label"><span class="checkbox"></span>Brad Pitt</a> (1)</li>

我将以下值传递给

filterAjaxify("actor=6")

这是有问题的代码:

(function($){
    var isRunning = false;
    // Return an array of selected navigation classes.
    function loopSelected(_node) {
        var _arr = [];
        _node.each(function(){
            var _class = $(this).attr('data-tax');
            _arr.push(_class);
        });
        return _arr;
    };

    // Animate the progress bar based on Ajax step completion.
    function increaseProgressBar(percent){
        $('div#progbar').animate({
            width: percent + '%'
        },30);
    };

    // Join the array with an & so we can break it later.
    function returnSelected(){
        var selected = loopSelected($('li.filter-selected'));
            return selected.join('&');
    };

    // When the navigation is clicked run the ajax function.
    $('a.ajax-filter-label, a.paginationNav, a.pagelink').live('click', function(e) {
        if(isRunning == false){
            isRunning = true;
            e.preventDefault();
            var relation = $(this).attr('rel');
            if($(this).parent('li').length > 0) {
                $(this).parent('li').toggleClass('filter-selected');
                thisPage = 1;
            }
            if(relation === 'next'){
                thisPage++;
            } else if(relation === 'prev') {
                thisPage--;
            } else if($(this).hasClass('pagelink')){
                thisPage = relation;
            }
            filterAjaxify(returnSelected());
        }
    });

    // Do all the ajax functions.
    function filterAjaxify(selected){
        $.ajax({
            url: ajaxurl,
            type: 'post',
            data: {
                "action":"affilterposts",
                "filters": selected,
                "posttypes": posttypes,
                "qo": qo,
                "paged": thisPage,
                "_ajax_nonce": nonce
            },
            beforeSend: function(){
                $('div#ajax-loader').fadeIn();
                $('section#ajax-filtered-section').fadeTo('slow',0.4);
                increaseProgressBar(33);
            },
            success: function(html){
                increaseProgressBar(80);
                $('section#ajax-filtered-section').html(html);
            },
            complete: function(){
                $('section#ajax-filtered-section').fadeTo('slow',1);
                increaseProgressBar(100);
                $('div#ajax-loader').fadeOut();
                isRunning = false;
            },
            error: function(){}
        });
    };
})(jQuery);
4

1 回答 1

5

<section>是 HTML5 中的新内容,较旧的 IE 不知道如何消化它,并且当您尝试将内容附加到此类元素时会出现一些 DOM 问题。

例如http://jsfiddle.net/EKU7R/

于 2012-06-16T10:09:10.340 回答