2009-09-14 13 views
11

Używam jQuery do dodawania dynamicznej treści do strony internetowej.jQuery "Obiekt nie obsługuje tej właściwości lub metody" w programie Internet Explorer

jestem próby utworzenia nowego elementu DOM na żądanie za pomocą następującego kodu:

container = $('<div id="myContainer"></div>'); 

Działa to doskonale w Firefoksie i Safari, Internet Explorer, ale generuje błąd. Błąd IE to: Object doesn't support this property or method

Wiem, że jQuery ładuje się poprawnie i wypróbowano zarówno składnię jQuery, jak i $.

Jakieś pomysły na co może być przyczyną?

Odpowiedz

10

Jeśli chcesz dodać elementu DOM, kod musi zostać zmodyfikowany kawałek:

$('body').append('<div id="myContainer"></div>'); 
// body can be whatever containing element you want to hold myContainer 
$('#myContainer').html('whatever you want inside of myContainer'); 
+1

Nadal nie wiem, dlaczego Oryginalna metoda nie działała (ponieważ jQuery docs ją wymienia), ale twoja metoda była idealną alternatywą. Dzięki. –

+0

Tak, przetestowany i działa również dla mnie. Dzięki, inkedmn! –

21

ja nie wiem, czy to może pomóc, ale poprawiłem mój problem. Zasadniczo program IE nie chce przypisywać obiektu jquery do niezdefiniowanej zmiennej.

To, co zrobiłem, oznacza zamiast tego zmienną lokalną.

Przed:

function foo() { 
    bar = $('#bar'); 
} 

Po:

function foo() { 
    var bar = $('#bar'); 
} 
+1

Pracowałem dla mnie. możesz zaoszczędzić wiele frustracji :) dzięki – theosp

+0

Perfect, pracował dla mnie też. – Roy

+0

To jest poprawna odpowiedź. Nie zdawałem sobie sprawy, że dostałem niechlujstwa i miałem 'parent = $ ('# elem')' kiedy potrzebowałem 'var parent = $ ('# elem')'. Raz zgadzam się z IE. Jeśli mam nazwać zmienną nazwę istniejącej zmiennej globalnej, lepiej najpierw zadeklarować ją jako nową zmienną! – Gavin

2

miałem podobny problem. Przeglądarka internetowa zgłasza ten błąd podczas próby zmodyfikowania symbolu globalnego. Dotyczy to nie tylko słów zarezerwowanych. Mój przykład był:

function foo() { 
    iframe = $("myDiv").append("<iframe></iframe>"); 
} 

Rozwiązuje to:

function foo() { 
    var iframe = $("myDiv").append("<iframe></iframe>"); 
} 

To też:

function foo() { 
    myIframe = $("myDiv").append("<iframe></iframe>"); 
} 

(ale pierwszy jest lepszy styl w każdym razie)

Powiązane problemy