查找在给定的一个右侧(或左侧)旁边呈现的终端DOM树元素

时间:2015-03-30 09:39:31

标签: jquery html5 dom

我有一个半任意的DOM树,其中有一个INPUT控件。例如:

.terminal { white-space: no-wrap; display: inline-block; }

<div id="the-root">
  <span class="terminal">Alpha</span>
  <span><span class="terminal">Beta</span></span>
  <span>
     <span class="terminal"><input value="Gamma" /></span>
     <span><span class="terminal">Delta</span></span>
  </span>
  <span class="terminal">Epsilon</span>
</div>

INPUT可以放在任何终端元素中。

我需要在INPUT的左侧和右侧找到下一个(已渲染的)终端元素。使用jQuery有一种简单的方法吗?

解决方案的加分点,如果有多个条目跨越多行,也能够在INPUT的正上方和下方找到终端元素。

这是一个让你玩的小提琴:http://jsfiddle.net/g4oq1q35/

1 个答案:

答案 0 :(得分:1)

我认为您可以尝试基于索引的解决方案

var $terminals = $('.terminal'),
    $terminal = $input.closest('.terminal'),
    idx = $terminals.index($terminal);
$terminals.eq(idx - 1).addClass('left');
$terminals.eq(idx + 1).addClass('right');

演示:Fiddle