意外调用方法或属性访问。的jquery.js?版本1.7.1 =

时间:2012-06-16 09:49:53

标签: javascript jquery html5 internet-explorer

我在IE7中收到'意外调用方法或属性访问',我的脚本在IE8中不起作用,我不能为我的生活找出原因。

我一直在IE中使用开发者工具(woohooo!),但它没有多大帮助。我得到的错误是在Jquery:

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

它在IE9,Safari,FF和Chrome中运行得非常好。

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

例如,如果您单击Brad Pitt,它应显示Brad Pitt所在的电影:

<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);

1 个答案:

答案 0 :(得分:5)

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

E.g。 http://jsfiddle.net/EKU7R/