Totally nonconstructive, but I love that my 'sauce' id has gotten so much airtime in this thread.
Sent from my iPad On Oct 25, 2010, at 8:01 PM, Phil Freo <[email protected]> wrote: > Steve - interesting. > > In my tests, 1.2 didn't have this problem. There's not a whole lot of > differences between the 1.2 and 1.3 Element.clone() function - I tried > commenting out the only real difference in 1.3 and it still didn't > work, which means there's some other issue in 1.3. I also tried > passing "false" into mergeAttributes without much luck. > > > On Oct 25, 5:28 pm, "Steve Onnis" <[email protected]> wrote: >> Well there is defiantly an issue and i can tell you what is it. When the >> item is cloned the ID is staying with it even though the actual ID attribute >> is updated, according to the DOM it does not change. I can confirm this >> because after the item is injected the id that is returned from the injected >> element is still the original id from the cloned element but the id in the >> actual code has been updated >> >> The IE version i was testing this on it version 6.0.3790.3959 in Service >> Pack 2 >> >> This works... >> >> <script type="text/javascript" charset="utf-8"> >> >> document.addEvent('domready', function(){ >> >> cloned = new Element($('cloneMe').get("tag"), {"id": >> "sauce"}).set("html", >> $('cloneMe').get("html")).inject($('cloneMe').parentNode, "top"); >> >> alert(cloned.getParent().get("html")); >> >> }); >> >> function getSauce() { >> >> var el = $(document.body).getElements("div")[0]; >> >> alert(el.get('id') + "\n" + el.get("text")); >> >> } >> >> </script> >> >> <input type="button" onclick="getSauce()" value="get sauce" /> >> >> This does not work... >> >> <script type="text/javascript" charset="utf-8"> >> >> document.addEvent('domready', function(){ >> >> cloned = $('cloneMe').clone(); >> >> cloned.set('id', 'sauce').set("text", "the cloned >> one").inject($('cloneMe').parentNode, "top"); >> >> alert(cloned.getParent().get("html")); >> >> }); >> >> function getSauce() { >> >> var el = $(document.body).getElements("div")[0]; >> >> alert(el.get('id') + "\n" + el.get("text")); >> >> } >> >> </script> >> >> <input type="button" onclick="getSauce()" value="get sauce" /> >> >> Looking at the code the element.clone() function is handled a little >> different for IE. It uses the clearAttributes() method on the element object >> but according to the MSDN >> (http://msdn.microsoft.com/en-us/library/ms536350%28VS.85%29.aspx) docs it >> says:- >> >> "The clearAttributes method clears only persistent HTML attributes. The ID >> attribute, styles, and script-only properties are not affected." >> >> It also uses a method element.mergAttributes() which is meant to copy the >> attributes from one element to another. The MSDN docs >> (http://msdn.microsoft.com/en-us/library/ms536614%28VS.85%29.aspx) say you >> pass in a source object and an optional "preserve" flag (true or false) to >> say if you want to preserve the identity of the attributes but i don't see >> that being used in the mootools code. >> >> I think certainly something that needs to be looked at >> >> Steve
