Jump to content
php.lv forumi

Recommended Posts

Posted

Tātad parastais cloneNode manā gadijumā ir par vāju, jo nepieciešams nokopēt arī visus eventus un properitijus, kas mākslīgi pievienoti elementam. Šis ir mans variants cik nu tālu esmu ticis un te arī iesprūdu(sīkāki komentāri kodā):

function copyNode(ele, id) {
var copy = ele.cloneNode(true); 
for(var item in ele) {
	copy.item = ele[item]; // Bez effekta, nav kludu, bet nav arī rezultāta
	//copy[item] = ele[item]; // Izmet kļūdu: setting a property that has only a getter 
 }
if(id) { copy.id = id; }
return copy; 
}

 

Cik saprotu, man ir jāatrod kāds veids, kā atsijāt tas vertības, kuras nevar pielikt, bet pašlaik nav ideju kā to izdarīt. Ar typeof nesanāca atrast isto variantu.

Posted

Hmm šis variants strādā.

 

Tikai nepieciešams vēl viens uzlabojums: japārkopē arī visi eventi, kas pievienoti ar addEventListener.

Pētiju internetā itkā uzgāju ka Mootools ir funkcija cloneEvents, bet tas viss pa sarezģītu manai saprašanai. Cik noprotu, laikam references uz visiem eventiem tiek glabātas atsevišķā objektā, no kurienes arī priekš kopijas tiek paņemti dati. Jo uz paša elementa nav nekur minēts par šiem eventiem.

Un lai visu sistēmu pārtaisītu uz šādu variantu, diezgan daudz darba. Japameklē vēl informācija.

Posted

Šķiet, ka tas ir vienīgais veids - saglabāt to eventu handleru sarakstu atseivšķā atribūtā kautvai tam pašam elementam, kuram to handleri liec virsū un pie klonēšanas piešķirt handlerus no šī saraksta jaunās nodes eventiem. Tik neaizmirsti izvākt ārā handleri no sarakasta, ja tas arī tiek ņemts nost no eventa.

×
×
  • Create New...