Jump to content
php.lv forumi

Pilnīga elementa nokopēšana


Lynx

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Šķ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.

Link to comment
Share on other sites

×
×
  • Create New...