jquery nextAll() 函数,检查是不是有next
Posted
技术标签:
【中文标题】jquery nextAll() 函数,检查是不是有next【英文标题】:jquery nextAll() function, check if there is a nextjquery nextAll() 函数,检查是否有next 【发布时间】:2012-06-26 19:12:10 【问题描述】:我如何测试是否有下一个,因为这不想工作
出于某种原因,它总是计算 3 个元素?
$("body "+content).on("keypress","form.fcheckoutform :input.aantal",function(e)
if (e.keyCode === 9)
var nextItem = $(this).nextAll();
if (!nextItem.length)
$(content+ '.aantal:eq(0)').focus();
return false;
$(this).nextAll().focus();
);
编辑: 解决了
$("body "+content).on("keypress","form.fcheckoutform :input.aantal",function(e)
e.preventDefault();
if (e.keyCode === 9)
var nextItem = $(this).parents('.item-checkout').next().children('form').children('div.fr').find('.aantal');
if (!nextItem.length)
$(content+ ' .aantal:first').focus();
else
nextItem.focus();
);
谢谢,理查德
【问题讨论】:
.next() 应该已经足够了,它会根据被选元素后面是否有元素返回0或1个元素。 next 对我不起作用,它只是选择了下一个元素,但不是同一类型 在 .nextAll() 中添加选择器,只选择与当前类型匹配的元素。 它可以工作,但我无法检查是否有下一个元素,那就是它中断的地方,它不断返回数字 3 并且焦点进入浏览器 发布您的解决方案作为答案并接受它。将.parents()
替换为.closest()
【参考方案1】:
试试这个:
$("body "+content).on("keypress","form.fcheckoutform :input.aantal",function(e)
if (e.keyCode === 9)
var nextItem = $(this).nextUntil(':input.aantal').next();
if (!nextItem.length)
$(content+ '.aantal:eq(0)').focus();
return false;
$(this).nextUntil(':input.aantal').next().focus();
);
【讨论】:
输入是否以任何方式嵌套? (例如内部 div 或标签) 是的,在 div 里面,你可以查看 www.woonbel.nl - 点击左上角 .next 不会为您上下遍历 dom,它实际上只会到达当前元素的下一个兄弟。您将需要 .parent().next().children() 等没有标记,我无法提供有效的代码。 是的,我现在看到了 3 的来源,它们是包含 div 的下三个项目。我还可以使用 nextAll 还是必须以某种方式查找元素的索引?以上是关于jquery nextAll() 函数,检查是不是有next的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Keydown Next、NextAll、父问题