我有一个关于与jQuery的dom导航的问题。我试图找到一个给定元素后面的dom中最接近的元素。查找给定元素后的实例
我有一个类似于结构的表格,通过div创建并在css中进行了样式化。我正在编辑一个元素,并且当用户按下Enter时,我想要关注以下可编辑元素。但是,它不是正在编辑的元素的兄弟。
HTML
<div class="calendarEntry">
<div when="2014,9,18" class="when">Sep 18</div>
<div class="items">
<div class="item">
<div code="ABC" class="type">ABC123</div>
<div offered="2014,9,15" class="offered dateish">Sep 15
<div class="offer editable">10</div>
<div class="sku editable">TH1</div>
<button>Publish</button>
</div>
</div>
<div class="item">
<div code="DEF" class="type">DEF321</div>
<div offered="2014,9,14" class="offered dateish">Sep 14
<div class="offer editable">10</div>
<div class="sku editable">TH2</div>
<button>Publish</button>
</div>
</div>
<div class="item">
<div code="GHI" class="type">GHI852</div>
<div offered="2014,9,12" class="offered dateish">Sep 12
<div class="offer editable">10</div>
<div class="sku editable">TH3</div>
<button>Publish</button>
</div>
</div>
</div>
</div>
注:有在页面上有多个日历条目。
假定用户正在编辑DEF312项目的报价。当他们击中输入时,我想编辑GHI852的报价。我有让代码可编辑的代码,用offer editing
的类替换它。如果他们正在编辑此日历条目中的最终商品,则回车键应该关注以下日历条目的第一个可编辑商品(如果有)。如果我们在列表的最底部,我不想回到顶部(我认为这会使问题过于复杂)。
我坚持的一点是如何找到下一个报价(所有报价都是可编辑的)。
这是我已经试过:
var nextOffer = $('.offer').find('.editing').next('.editable');
显然,这是行不通的。问题是,以下可编辑优惠不是正在编辑的当前优惠的兄弟,所以next()
不适用于我。以下优惠可能在当前的日历条目中,或者可能在下一个日历条目中。无论哪种方式,这是几个divs,在不同的深度。
可我甚至为此与jQuery DOM遍历,还是我好只是蛮力迫使它通过JavaScript(即循环遍历所有.editable
实例后.editing
?
您是否尝试过使用'.parent() '摆脱当前可编辑的报价并进入下一个? – APAD1 2014-09-05 18:53:00
我认为你的问题在于“物品”不断地越来越深入地嵌套。该结构并不完全遵循逻辑顺序。 – 2014-09-05 18:54:14
是的,尝试过父母()和父母()的各种组合。无法解决。 – 2014-09-05 18:54:53