jQuery使用parent()函数删除对应div行的实现问题求助
问题原因
- 重复ID问题:HTML规范要求ID全局唯一,你多行共用
deleteLineButton这个ID时,$("#deleteLineButton")只会匹配页面中第一个出现的对应ID元素,所以不管点哪行都只会删除第一行。 - this指向问题:直接在HTML的onclick属性中调用函数时,函数内部的
this默认指向window对象,而非触发点击的按钮元素,所以你直接写$(this)找不到对应的按钮,逻辑自然不生效。
快速解决方案(无需修改现有结构,仅改两处代码)
- 修改删除按钮的onclick属性,把当前点击的元素作为参数传入函数,同时删除重复的ID属性:
<button onclick="deleteLine(this);" title="Delete this line">X</button>
- 修改deleteLine函数接收参数,同时建议用
closest()替代多层parent(),避免后续DOM结构调整导致层级不匹配:
function deleteLine(clickedBtn) { $(clickedBtn).closest('.row').remove(); }
后续优化建议(等你要规范代码的时候可以用)
不用在每个按钮上写onclick,用事件委托统一绑定事件,新增行也不需要额外处理绑定逻辑:
// 假设你所有的行都放在类名为row-container的父容器中 $('.row-container').on('click', 'button[title="Delete this line"]', function() { $(this).closest('.row').remove(); })
内容的提问来源于stack exchange,提问作者Anthony LoPrimo
相关产品推荐
相关产品推荐

