jQuery "Object doesn't support this property or method" in Internet Explorer

I am using jQuery to add some dynamic content to a website.

I am attempting to create a new DOM element on-demand using the following code:

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

This works perfectly in Firefox and Safari, but Internet Explorer is generating an error. The IE error is: Object doesn't support this property or method

I know that jQuery is loading properly, and have tried both the jQuery and $ syntax.

Any ideas as to what might be causing this?

Answers


If you want to add a DOM element, the code needs to be modified a bit:

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

I don't know if it can help but I fixed my problem. Basically IE doesn't want to assign jquery object to an undefined variable.

So what I did is declare this a local variable instead.

Before:

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

After:

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

I had a similar problem. Internet explorer throws this error when you try to modify a global symbol. This is the case not only for reserved words. My example was:

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

This solves it:

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

This, too:

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

(but the first is better style anyway)


Need Your Help

Dynamic template URLs in Angular 2

javascript angular

I've been playing around with Angular 2 for the past few days and wondered if it was possible to provide a dynamic templateUrl to the @View decorator.

Collapsing a Group of Commits into One on Git

git

I have the habit of making a huge number of small commits, and I'm fine with it. But I would like to, from time to time, take a bunch of those linear commits and collapse them together as just one ...