我希望下一个Element具有相同的类。所以我在课堂上有一个点击动作 " calculationContainer&#34 ;.当我单击此元素时,我希望能够使用类" calculationContainer"访问下一个元素。但我尝试过的所有工作都没有。也许有人可以帮我这个?
我有这个HTML代码:
<div class="body">
<div class="inner">
<div class="calculationContainer">
<div class="element">
<input type="text" id="name1">
</div>
</div>
</div>
</div>
<div class="body">
<div class="inner">
<div class="calculationContainer">
<div class="element">
<input type="text" id="name2">
</div>
</div>
</div>
</div>
<div class="body">
<div class="inner">
<div class="calculationContainer">
<div class="element">
<input type="text" id="name3">
</div>
</div>
</div>
</div>
我的jQuery:
$('.calculationContainer').on('click', function() {
var amountCalculationContainer = $(this);
var nextAmountCalculationContainer = amountCalculationContainer.next('.calculationContainer'); //<- Only finds the div with class "element"
});
答案 0 :(得分:5)
试试这个: -
$('.calculationContainer').on('click', function() {
var $elem = $(this).closest('div.body').next().find('div.calculationContainer')
});
使用.closest()
遍历并找到第一个div.body
父级,然后使用.next()
获取下一个元素,然后使用div.calculationContainer
找到.find()
。
处理.calculationContainer
位于最后位置时的情况(如演示中所示)。
答案 1 :(得分:2)
如果更改HTML的结构,不会破坏的技术是:
<强> JavaScript的:强>
function next(event) {
var list = $('.calculationContainer'); //all containers
var index = list.index($(event.target)); //current container
index = (index + 1) % list.length; //increment with wrap
var nextAmountCalculationContainer = list.eq(index);
}
$('.calculationContainer').click(next);
看看你是否能抓住红色按钮:
https://jsfiddle.net/55pmmzd6/68
答案 2 :(得分:0)
试试这个:
$('.calculationContainer').on('click', function() {
var next_ele = $(this).parents("body").find(".calculationContainer");
var $next = next_ele.filter(":gt(" + next_ele.index(this) + ")").first()
console.log($next.html())
});