jQuery Traversing Dynamically generated DOM (next(), prev())
jQuery Traversing Dynamically generated DOM (next(), prev())
我有一个HTML表和jQuery处理程序,使用.next()和.prev()上下移动行,但我也想添加新行,在添加新行并尝试上下移动旧行后,它们移动的位置比预期的要多。下面是一个关于 jsfiddle http://jsfiddle.net/3CQYN/的示例
$(function() {
initControls();
$('.new').click(function() {
$('<tr><td>TEST</td><td><a href="#" class="up">Up</a> <a href="#" class="down">Down</a></td></tr>').appendTo($('table tbody'));
initControls();
});
});
function initControls()
{
$('.down').click(function() {
var parentRow = $(this).closest('tr');
parentRow.insertAfter(parentRow.next());
});
$('.up').click(function() {
var parentRow = $(this).closest('tr');
parentRow.insertBefore(parentRow.prev());
});
}
尝试上下移动行,然后添加一些新行并再次上下移动旧行,您将看到问题。
每次添加新行时,都会重新绑定处理程序,最终将多个处理程序绑定到单独的向上和向下链接。相反,使用事件委托(仅在 DOM 就绪时执行一次):
$(document).on('click', '.down', function() {
// ...
});
$(document).on('click', '.up', function() {
// ...
});
http://jsfiddle.net/Gt4Zq/
请注意,如果你能找到一个比document
更接近元素的容器来绑定,那将是可取的。
相关文章:
- 使用next、prev按钮制作简单的jQuery图像滑块
- Jquery:为新数据创建寻呼机(next-prev按钮)
- 带有prev和next的jquery自定义循环插件
- jQuery next().addClass() and prev().addClass() issue
- 为什么 .next('li:visible') 或 .prev('li:visible') 不能跳过不可见的元素
- jQuery Traversing Dynamically generated DOM (next(), prev())
- Lightbox2:如何在“lb-prev”和“lb-next”分区之间添加“编辑”
- 如何使next和prev按钮在列表中导航并触发其功能
- 图片库next-prev(javascript数组中的php数组)
- carouFredSel:为next/prev按钮创建一个函数
- 使用Bootstrap ScrollSpy滚动至NEXT/PREV按钮
- jQuery中的图像滑块,实际幻灯片作为next/prev触发器
- jQuery幻灯片;使用next/prev后不会自动滑动
- jQuery plugin quickPager Next/Prev Links
- Javascript Next, Prev, Random from an array
- jQuery, next, prev,循环到first和last
- 如何从Ajax内容中触发next/prev
- 在Next/Prev控件单击事件时从bxSlider中移除一个滑块
- jquery next/prev按钮不工作
- Bootstrap Carousel Next/Prev not working