#6286 closed bug (worksforme)
Unexpected call to method or property access.
Reported by: | nata79 | Owned by: | |
---|---|---|---|
Priority: | undecided | Milestone: | 1.4.3 |
Component: | core | Version: | 1.4.2 |
Keywords: | Unexpected call to method or property access | Cc: | |
Blocked by: | Blocking: |
Description
By using "$(elId).text(myTextValue);" to set element text value, regardless ver1.3.2 or ver1.4.2, the exception "Unexpected call to method or property access" will throw by Internet Explorer 7/8.
The exception is throw at line "this.appendChild( elem );".
### CODE ### text: function( text ) {
... ... if ( typeof text !== "object" && text !== undefined ) {
return this.empty().append( (this[0] && this[0].ownerDocument document).createTextNode( text ) ); } ...
},
append: function() {
return this.domManip(arguments, true, function( elem ) { if ( this.nodeType === 1 ) {
this.appendChild( elem );
}
}); },
Change History (15)
comment:1 follow-up: 13 Changed 13 years ago by
comment:2 Changed 13 years ago by
Priority: | → undecided |
---|---|
Resolution: | → worksforme |
Status: | new → closed |
This is working fine for me. If you would like to submit additional test cases or further details to assist is in re-evaluating the original bug submitted we would be more than happy to take another look at it.
comment:3 Changed 12 years ago by
This too does not work...!!! JQUERY 1.3.2 min. The same old error.. of IE 7 & 8 ... "Unexpected call to method or property access."...
function getPeople(people) {
$("#people_list").text(""); UL element ID $("input#autoNames").text(""); $.each(people, function(i) {
$("#people_list").append("<li>" + this.Name + "</li>");
});
}
Problem statement: {this.appendChild(E)}
comment:4 Changed 12 years ago by
Your comment is rather unclear to me. If you could so kind to provide a reproducible minimal test case which shows this bug with the current jQuery version we will investigate this issue.
comment:5 Changed 12 years ago by
HTML:
<input type="text" id="autoNames" />
<label id="lblSelName"> </label> <p>
<input type="button" id="addPerson" value="Add Person" />
<input type="button" id="deletCustomer" value="Delete Person" />
<input type="button" id="getPeople" value="Refresh List" />
<br />
<ul id="people_list"> </ul>
</p>
Script:
<script type="text/javascript">
$(this).ready(function() {
$.getJSON("/Home/PeopleGet", null, autoTextBox);
});
$(this).ready(function() {
$.getJSON("/Home/PeopleGet", null, getPeople);
});
function autoTextBox(people) {
var myCars = new Array(); $.each(people, function(i) {
myCars[i] = this.Name;
}); $("input#autoNames").autocomplete({
source: myCars
});
}
$(function() {
$("#getPeople").click(function() {
$.getJSON("/Home/PeopleGet", null, getPeople);
});
});
function getPeople(people) {
$("#people_list").text(""); $("input#autoNames").text(""); $.each(people, function(i) {
$("#people_list").append("<li>" + this.Name + "</li>");
}); $("input#autoNames").val();
}
$("#addPerson").click(function() {
var name = $("input#autoNames")[0].value; if (name == "") {
alert("You must provide a name"); return;
} var person = { Name: name }; $.post("/Home/PeopleSave", person, null, "json"); $.getJSON("/Home/PeopleGet", null, getPeople); alert("Customer is added to the database!"); $("input#autoNames").val(); $("input#autoNames").focus();
});
$("#deletCustomer").click(function() {
var name = $("input#autoNames")[0].value; if (name == "") {
alert("You must provide a name"); return;
} var person = { Name: name }; $.post("/Home/PeopleDelete", person, null, "json"); $.getJSON("/Home/PeopleGet", null, getPeople); alert("Customer successfully deleted from the database..!"); $("input#autoNames").val(); $("input#autoNames").focus();
});
</script>
comment:6 Changed 12 years ago by
Bug still exists in 1.5.2;
or var $menu = $input.after('<ul></ul>'); var $menu = $input.after('<ul />');
$menu.append("<li>item</li>");
IE 80.0.6001 on Win XP
comment:7 Changed 12 years ago by
I experienced the issue as well. The error was thrown when, somehow, in the context of append(), this referenced a SCRIPT tag and elem referenced a DIV.
I resolved the issue by rewriting append() to: return this.domManip(arguments, true, function( elem ) { if ( this.nodeType === 1 ) {
if (this.tagName.toUpperCase() === "SCRIPT") {
elem.appendChild( this );
} else {
this.appendChild( elem );
}
} });
comment:8 follow-up: 9 Changed 12 years ago by
A simple jsfiddle, does not work with IE 8 no matter what version of jquery I use: http://jsfiddle.net/4XZRT/
comment:9 Changed 12 years ago by
Replying to anonymous:
A simple jsfiddle, does not work with IE 8 no matter what version of jquery I use: http://jsfiddle.net/4XZRT/
Bad formed <a> tag, fix it and it works
comment:10 Changed 11 years ago by
I have got the same error. I replaced .html with .replaceWith and it worked.
comment:12 Changed 10 years ago by
i also had the same error in jquery-1.9.1 the problem was i used $('#elid').text();
i replaced text with val and it worked for me :)
comment:13 Changed 10 years ago by
Replying to jerone:
I had this problem too, and I solved it with adding an HTML5 enabling script:
<!--[if lt IE 9]> <script> var e = ("abbr,article,aside,audio,canvas,datalist,details," + "figure,footer,header,hgroup,mark,menu,meter,nav,output," + "progress,section,time,video").split(','); for (var i = 0; i < e.length; i++) { document.createElement(e[i]); } </script> <![endif]-->
comment:14 Changed 10 years ago by
This can happen in IE8 when using a class as a selector.
Imagine the following...
<p class="update_me">Some text</p> <input class="update_me" type="text" name="something" value="123">
If you were to do the following in IE8 it would cause this error...
$('.update_me').text('456');
Other browsers will let you get away with it, but IE8 will complain as the input field isn't compatible with the .text() method.
comment:15 Changed 10 years ago by
Happened to me, as well, while using .text("blabla") on an input.
I had this problem too, and I solved it with adding an HTML5 enabling script: