2009-08-08 5 views
1

Ich habe eine Seite, die 4 statische Divs mit IDs enthalten wird. Ich werde Scriptable Dragable- und Droppable-Effekte hinzufügen, um die Interaktion zu ermöglichen, indem viele dynamisch generierte Divs von einem Div in ein anderes verschoben werden.Wie kann ich herausfinden, was Div ein Div mit Javascript ist?

Ich muss in der Lage sein herauszufinden, welche der statischen Divs die dynamischen divs sind. Wie kann ich diese Informationen erhalten?

Antwort

3

Kommentatoren siehe Hinweis Skriptatische Methoden, um dies zu tun, aber es ist immer wert zu wissen, wie man grundlegende DOM-Manipulation dieser Art ohne Krücken durchführen kann. Dieser Code ist nicht getestet, aber sicherlich sehr nahe, was Sie verwenden möchten würde:

/** 
* Finds the ancestor div element of descendantDiv which has one of 
* the given array of ids. If multiple div elements have with the 
* given ids are ancestors of descendantDiv, the most closely related 
* one (i.e. parent preferred to grandparent) is returned. If no 
* ancestor of descendantDiv is a div element with one of the ids 
* given by ids, returns null. 
* 
* @param descendantDiv : HTMLDivElement 
* the div element whose containing div with one of the provided 
* ids is to be determined 
* @param ids : [string] 
* array of ids which the desired ancestor div might have 
* @returns HTMLDivElement 
* the first parent, grandparent, etc. div element of descendantDiv 
* which has an id contained in ids 
*/ 
function findAncestorDivWithId(descendantDiv, ids) 
{ 
    for (var parent = descendantDiv.parentNode; 
     parent; 
     parent = parent.parentNode) 
    { 
    if (parent.nodeName.toLowerCase() !== "div") 
     continue; 
    for (var i = 0, sz = ids.length; i < sz; i++) 
    { 
     if (parent.id === ids[i]) 
     return parent; 
    } 
    } 
    return null; 
} 
+0

Wow! Danke, ich denke, ich muss w3schools nach einem großen fetten Spickzettel aller eingebauten DOM-Fähigkeiten checken. Ich fange gerade an, meine Füße mit Javascript nass zu machen. –

1

Da Sie planen Scriptaculous verwenden möchten, können Sie dies mit Prototype leicht tun:

if ($("dynamicElement").descendantOf("staticElement")) 
{ 

} 
0

soweit ich verstehe Ihre Frage Sie alle Childs (oder alle Kind divs) finden wollen eines bekannten Element ?

Wenn Sie scriptaculous verwenden, können Sie die Methode childElements vom Prototyp verwenden. siehe http://prototypejs.org/api/element/childElements für Details.

willkommen zu stackoverflow.

+0

Nun, ich will nicht alle Elemente eines div finden, weil ich mehrere Benutzer Drag & Drop aus der gleichen Datenbank haben , so kann ein Lesen aller Elemente, gefolgt von einem Schreiben in die Datenbank, die Änderungen von jemandem rückgängig machen. Es klingt wie die beste Wette (von den Optionen, die bis jetzt gegeben werden) ist 4 wenn Aussagen ähnlich der in der ersten Antwort. Vielen Dank, Jungs! (auch <3 diese Seite!) –