найти на странице соседних братьев и сестер jquery? - PullRequest
1 голос
/ 19 марта 2011

хорошо, я искал ответ на этот вопрос (если он вообще есть), но не повезло

У меня есть последовательность элементов div, как показано на рисунке ниже:

http://i61.photobucket.com/albums/h46/DrAcOliCh_2006/untitled-1.jpg?t=1300520458

синий фон является абсолютным родителем оранжевых div'ов, которые также являются братьями и сестрами

DOM не совсем организован в соответствии с тем, как оранжевые элементы появляются на странице, потому что они все перетаскиваемы (я использовал jquery UI), и я переместил их внутри родителя, но, как некоторые знают, DOM не делает меняются, когда я перемещаю перетаскиваемые элементы вокруг, поэтому в основном структура братьев и сестер остается неизменной внутри DOM

Что мне в некотором роде нужно (опять же, если это вообще возможно), это определить ближайших соседей на странице родных братьев и сестер; другими словами, скажем, мы берем тот элемент «FlashBanner», который на странице имеет элементы «Logo», «Search» и «ShoppingBasket» как непосредственные верхние элементы, а элементы «Categories» и «Content» как непосредственные нижние братья и сестры (и нет левых или правых братьев и сестер)

У меня есть ручное решение, то есть предварительно указать соседние братья и сестры на странице для каждого элемента через серию полей формы и прочее (другую историю и другую стену текста для объяснения), но это не важно Банкомат, как я хочу знать, можно ли это сделать автоматически (например, скажите jquery найти их для меня)

ценю любую помощь, даже "это не может быть сделано автоматически", и спасибо за ваше время

надеюсь, что это не кажется двусмысленным (или глупым в этом отношении), и почему мне нужно это сделать, не спрашивайте: P стена текста, чтобы объяснить

ура :) 1020 *

1 Ответ

0 голосов
/ 21 марта 2011

Просто хотел уточнить, что DOM на самом деле меняется, когда вы перемещаете вещи с помощью draggable-ui.

Так что это может помочь вам найти то, что вы ищете.

Вы можете сделать что-то вроде:

$('#flashbanner').prev()  // For previous siblings

Или переберите все элементы div.

$(#blue).find('div').each(function(){
  $(this).blahblah  // current div
});

Или даже перебирать всех предыдущих братьев и сестер, искать высоту и т. Д. Но это должно быть последнее средство ...

$('#flasshbanner').prevAll().each(function(){
  var height = $(this).height();
  if(height == blahblah){
    //do stuff
  }
});

Но ключом является DOM, он сдвигается, когда вы перемещаете вещи, поэтому, если вы знаете, что происходит, вы можете найти его «автоматически» с помощью jQuery. Плагин Firefox FireBug должен помочь вам взглянуть на новую модель DOM по мере ее перемещения. (Я полагаю, что большинство веб-разработчиков используют FireFox при разработке из-за чистого блеска FireBug)

Вы можете попробовать загрузить свой код на http://jsfiddle.net/, чтобы мы могли помочь вам в дальнейшем с фактическими исходными кодами. :)

Удачи, приятель.

...