2013-03-14 2 views
4

Этот скрипт работает в firefox или chrome, но только получает половину пути в IE9, который является лучшим браузером для наших сайтов.Объект не поддерживает свойство или метод 'append' в IE9

проблема, возникающая при попытке получить эту ошибку.

SCRIPT438: Объект не поддерживает свойство или метод 'добавляемых' calc_ajax.js, строка 26 символов 21

на этой линии: item.append (ссылка);

and im stuck why. любая помощь будет оценена по достоинству.

$(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'); 
     } 
    });   
}); 

});

+0

Вы не объявляя '' item' ни link', поэтому они глобальные, которые могут вызвать проблемы, IE является очень особенным , но не уверен, что это проблема ... – elclanrs

+0

Больше информации о том, как это сделать, поскольку этот код не был написан мной, и мои знания о js очень немногие, к сожалению, извините, что это звучит как глупая задница. – JoeLee

+0

@JoeLee человек, который написал его, должен задавать эти вопросы –

ответ

9

window.item специальный метод в Internet Explorer и так вставленный код не объявлял локальную переменную item он пытается передать нативный метод в IE. IE не разрешил переназначение, так что вы действительно не получили объект jQuery, который вы ожидали в переменной item, и поэтому метод append недоступен.

Самый простой способ исправить код - добавить var прямо перед использованием переменной item. Я бросил вместе jsFiddle, показывающий, как это устраняет проблему в IE http://jsfiddle.net/httyY/

1

попробовать:

$.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);  
}); 
+0

спасибо вам большое за этот sudhir, очень ценимый: D – JoeLee

+0

добро пожаловать ... :) –

Смежные вопросы