问题描述
- js 点击事件 出错了 求解答
-
超链接<td><a href="javascript:del_sure()" class="delete" id="${param.pageNo },${item.book.id }">删除</a></td>
方法:
function del_sure() { flag = confirm("确定要删除信息吗 ?"); if (flag) { strArr = $(".delete").attr("id"); str = strArr.split(","); alert(strArr); var href = "bookServlet?method=remove&pageNo=" + str[0] + "&id=" + str[1] ; window.location.href = href; } return; }
问题:得出页面是 item1 删除(暂记为a) item2 删除(暂记为b) 我点击 a -->弹出confirm 框 -->点击取消 不进行删除操作 -->点击 b-->弹出confirm 框 -->点击确认 进行删除操作 :但是删除的是item1 请问这是怎么回事? ps:我是根据id删除的 就是说 无论是否取消, 他得到的id是我第一次点击的那个id 到底是哪里错了 strArr = $(".delete").attr("id");这个话不就是我点哪个就是获取当前的值吗 为什么总是先获取先点击的那个item的id
解决方案
$(".delete").attr("id");得到的是第一个链接的值。。要获取对应的内容,要用dom关系来获取
<td><a href="javascript:void(0)" onclick="del_sure(this)" class="delete" id="${param.pageNo },${item.book.id }">删除</a></td>
function del_sure(a) {
flag = confirm("确定要删除信息吗 ?");
if (flag) {
strArr = $(a).attr("id");////
str = strArr.split(",");
alert(strArr);
var href = "bookServlet?method=remove&pageNo=" + str[0] + "&id="
+ str[1] ;
window.location.href = href;
}
return;
}
解决方案二:
可能是$(".delete")这个有问题。
这是把所有class属性为delete的组件都取到。你的代码里没有循环,导致莫名错误。
解决方案三:
因为你两个都定义class="delete"了吧,结果获取了两个元素,删了第一个
解决方案四:
$(".delete").attr("id")这句话写在if(flag){}里面,当我点击取消,flag不是等于false吗,根本就没进去呀,为什么取消了再点击别的删除 确认之后会删除之前点击的那个 话说点了别的删除false等于true之后,$(".delete").attr("id")不应该是当前点击的ID吗
解决方案五:
del_sure()里面加个参数或者是加上this,后面处理是不是会更方便点呢
时间: 2024-09-22 09:43:15