Как я могу узнать, что такое div в div с javascript? - PullRequest
1 голос
/ 09 августа 2009

У меня есть страница, которая будет содержать 4 статических элемента с идентификаторами. Я буду добавлять скриптовые эффекты, которые можно перетаскивать и сбрасывать, чтобы обеспечить взаимодействие, перемещая множество динамически генерируемых элементов из одного элемента в другой.

Мне нужно уметь выяснить, в каком статическом div находятся динамические div. Как я могу получить эту информацию?

Ответы [ 3 ]

3 голосов
/ 09 августа 2009

Комментаторы выше отмечают скриптовые методы для этого, но всегда стоит знать, как выполнять базовые манипуляции с DOM таким образом без костылей. Этот код не проверен, но, безусловно, очень близок к тому, что вы хотите использовать:

/**
 * 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;
}
1 голос
/ 09 августа 2009

Поскольку вы планируете использовать Scriptaculous, вы можете легко это сделать с помощью Prototype:

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

}
0 голосов
/ 09 августа 2009

насколько я понимаю ваш вопрос, вы хотите найти всех дочерних элементов (или всех дочерних элементов) известного элемента?

когда вы используете scriptaculous, вы можете использовать метод childElements из прототипа. подробности см. http://prototypejs.org/api/element/childElements.

добро пожаловать в stackoverflow.

...