2009-08-08 4 views
1

J'ai une page qui contiendra 4 divs statiques avec des ID. J'ajouterai des effets dragables et droppables scriptaculents pour permettre l'interaction en déplaçant plusieurs div divisés dynamiquement d'un div à l'autre.Comment puis-je savoir ce que div div est avec javascript?

Je dois être en mesure de savoir lequel des divs statiques dans les divs dynamiques sont po Comment puis-je obtenir cette information?

Répondre

3

Les commentateurs ci-dessus notent des méthodes scriptaculeuses pour ce faire, mais il est toujours utile de savoir comment effectuer une manipulation DOM de base de cette manière sans béquilles. Ce code est non testé mais certainement très proche de ce que vous voulez utiliser:

/** 
* 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! Merci, il me semble que j'ai besoin de vérifier w3schools pour une grosse feuille de triche de toutes les capacités DOM intégrées. Je commence juste à me mouiller les pieds avec Javascript. –

1

Puisque vous avez l'intention d'utiliser Scriptaculous, vous pouvez le faire facilement avec Prototype:

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

} 
0

pour autant que je comprends votre question, vous voulez trouver tous Childs (ou tous les divs enfants) d'une connue élément? Lorsque vous utilisez scriptaculous, vous pouvez utiliser la méthode childElements du prototype. voir http://prototypejs.org/api/element/childElements pour plus de détails.

bienvenue à stackoverflow.

+0

Eh bien, je ne veux pas trouver tous les éléments d'un div parce que je vais avoir plusieurs utilisateurs glisser-déposer de la même base de données , donc une lecture de tous les éléments suivis d'une écriture dans la base de données peut annuler les changements de quelqu'un. Il semble que le meilleur pari (parmi les options données à ce jour) est de 4 si les déclarations sont similaires à celle de la première réponse. Merci jusqu'à présent les gars! (aussi, <3 ce site!) –

Questions connexes