繁体   English   中英

对象不支持IE9中的属性或方法'append'

[英]Object doesn't support property or method 'append' in IE9

这个脚本在firefox或chrome中工作,但只能在IE9中获得一半,IE9是我们网站的顶级浏览器。

我得到的问题是它抛出这个错误。

SCRIPT438:对象不支持属性或方法'append'calc_ajax.js,第26行字符21

在这一行:item.append(link);

并且我坚持了原因。 任何帮助,将不胜感激。

$(document).ready(function(){
$('.first a.btn').click(function(){
    $('.first a.active').removeClass('active');
    $(this).addClass('active');
    $('.second .title').addClass('active');

    var id = $(this).data('cat-id');

    var wrap = $('<div>');

    $.ajax({
        url:    script_url,
        type:   "post",
        data: {"cat": id},
        dataType: "json"
    }).success(function(result){
        if(result.status == "ok"){
            $.each(result.data, function(i, elem){
                item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
                link = $("<a href='#results' class='btn'>");
                link.text(elem.name);
                link.data('subcat-id', elem.id);
                item.append(link);

                wrap.append(item);

            });
            $('.second .body').html(wrap).slideDown('fast');
        }
    });
});

$('.second a.btn').live('click', function(){
    $('.second .body-area.active').removeClass('active');
    $(this).parent().addClass('active');

    var sub_id = $(this).data('subcat-id');        

    $.ajax({
        url:    script_url,
        type:   "post",
        data: {"subcat": sub_id},
        dataType: "json"
    }).success(function(result){
        if(result.status == "ok"){
            $('.third .title').text(result.data.title);
            $('.third .body').html(result.data.body);
            $('.third').slideDown('fast'); 
        }
    });        
});

});

window.item是Internet Explorer中的一种特殊方法,由于您粘贴的代码未声明本地变量item因此它尝试在IE中重新分配本机方法。 IE不允许重新分配,因此您没有真正获得item变量中您期望的jQuery对象,因此append方法不可用。

修复代码的最简单方法是在使用item变量之前添加var 我把一个jsFiddle放在一起,展示它如何修复IE中的问题http://jsfiddle.net/httyY/

$.ajax({
    url:    script_url,
    type:   "post",
    data: {"cat": id},
    dataType: "json"
}).success(function(result){
    if(result.status == "ok"){
        $.each(result.data, function(i, elem){
            var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
            var link = $("<a href='#results' class='btn'>");
            link.text(elem.name);
            link.data('subcat-id', elem.id);
            item.append(link);

            wrap.append(item);

        });
        $('.second .body').html(wrap).slideDown('fast');
    }
});

当使用本机函数document.body.append时,我在IE11上遇到了同样的错误。

您可以使用document.body.appendChild或从MDN插入polyfill( https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append#Polyfill )。

尝试:

$.each(result.data, function(i, elem){
   var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
   var link = $("<a />", {"href" :"#results", "class": "btn"});
   link.text(elem.name);
   link.data('subcat-id', elem.id);
   item.append(link);
   wrap.append(item);    
});

暂无
暂无

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

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