Side navigation
#7731 closed bug (invalid)
Opened December 08, 2010 10:04PM UTC
Closed December 08, 2010 10:53PM UTC
Uncaught TypeError: Object #<an Object> has no method 'replace'
| Reported by: | FamLam <fam.lam@live.nl> | Owned by: | FamLam <fam.lam@live.nl> |
|---|---|---|---|
| Priority: | undecided | Milestone: | 1.6 |
| Component: | unfiled | Version: | 1.4.4 |
| Keywords: | Cc: | ||
| Blocked by: | Blocking: |
Description
Uncaught TypeError: Object #<an Object> has no method 'replace' in line 101 of the minimized version of JQuery 1.4.4
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.4.min.js" type="text/javascript"></script>
<script>
function removeFrame(el) {
var parentEl = $(el).parent();
var cols = (parentEl.attr('cols').indexOf(',') > 0);
if (!cols && parentEl.attr('rows').indexOf(',') <= 0)
return;
cols = (cols ? 'cols' : 'rows');
var sizes = parentEl.attr(cols).split(',');
sizes[$(el).prevUntil(parentEl).length] = 0;
parentEl.attr(cols, sizes.join(','));
}
beforeLoadHandler = function(event) {
var el = event.target;
event.preventDefault();
if (el.nodeName == "FRAME")
removeFrame(el);
}
document.addEventListener("beforeload", beforeLoadHandler, true);
</script>
</head>
<frameset rows="50%,75" border="0" framespacing="0">
<frame name="destframe" src="http://www.google.com/" marginwidth="0" marginheight="0" scrolling="auto" frameborder="0">
<frame src="http://www.jquery.com/" name="bottom" frameborder="0" scrolling="NO" marginwidth="0" marginheight="0" noresize="">
</frameset>
</html>
This worked fine in 1.4.2 AFAIK
Browser: Chrome
The error occurs in this part of the code:
$(el).prevUntil(parentEl)
Attachments (0)
Change History (2)
Changed December 08, 2010 10:30PM UTC by comment:1
| owner: | → FamLam <fam.lam@live.nl> |
|---|---|
| status: | new → pending |
Changed December 08, 2010 10:53PM UTC by comment:2
| resolution: | → invalid |
|---|---|
| status: | pending → closed |
This isn't a jQuery bug. Your usage of .prevUntil(selector) is invalid. The documentation says:
prevUntil( [ selector ] )\\\\ selector A string containing a selector expression to indicate where to stop matching preceding sibling elements.
But you are passing in parentEl which is a jQuery object and not a string. That you didn't get an exception with 1.4.2 was just by chance
Btw. I don't understand why you even do $(el).prevUntil(parentEl).
prevUntil(selector) returns all siblings up to but not including the element matched by the selector. As parentEl is the parent of el (excluding the fact that parentEl isn't a string) this would never match as a parent can't be a sibling. So you can just replace this expression with $(el).prevAll().
Thanks for taking the time to contribute to the jQuery project! Please provide a reduced jsFiddle test case to help us assess your ticket!
Additionally, test against the latest jQuery release AND the jQuery 0 GIT version to ensure the issue still exists. Be Excellent to eachother!
Lastly, I attempted to recreate your issue from the code above and was unable to produce an error.