如何使用jQuery Click函数实现GridView元素的自定义点击事件
解决方案
我来帮你把原来设置href的逻辑改成jQuery点击事件绑定,这样你就能自定义点击后的行为了。下面是修改后的完整代码,我会重点标注变化的部分:
function OnSuccess(response) { var xmlDoc = $.parseXML(response.d); var xml = $(xmlDoc); var customers = xml.find("Table"); var row = $("[id*=gvCustomers] tr:last-child").clone(true); $("[id*=gvCustomers] tr").not($("[id*=gvCustomers] tr:first-child")).remove(); $.each(customers, function () { var customer = $(this); var tdcNo = $(this).find("TDC_NO").text(); // 先把TDC_NO的值存起来,方便后续使用 // 设置a标签的显示文本(这部分保留原来的逻辑) $("td", row).eq(0).find("a").text(tdcNo); // 替换原来的href设置,改成绑定click事件 $("td", row).eq(0).find("a").off('click').on('click', function(event) { // 如果你需要阻止默认的a标签跳转(如果原来的a标签有默认href的话),可以加这行 // event.preventDefault(); // 这里写你点击后的自定义逻辑,比如跳转页面 window.open("Uncoated_Wire.aspx?Id=" + tdcNo, "_blank"); // 还可以添加其他你需要的操作,比如显示加载提示、发送请求等 // console.log("点击了TDC_NO为" + tdcNo + "的元素"); }); // 下面的代码保留原来的逻辑 $("td", row).eq(1).html($(this).find("REVISION").text()); $("td", row).eq(2).html($(this).find("REVISION_DATE").text()); $("td", row).eq(3).html($(this).find("P_GROUP").text()); $("[id*=gvCustomers]").append(row); row = $("[id*=gvCustomers] tr:last-child").clone(true); }); }
关键说明:
- 我先把
TDC_NO的值单独存到变量tdcNo里,避免重复查找DOM,让代码更简洁。 - 用
off('click').on('click', ...)的方式绑定事件,是为了防止多次克隆后重复绑定事件(因为clone(true)会复制事件,每次循环克隆如果不先解绑,可能会导致同一个元素绑定多个相同事件)。 - 如果你不需要默认的a标签跳转行为,可以取消注释
event.preventDefault();这行代码。 - 在点击事件里,你可以完全自定义逻辑,比如先做一些数据验证、发送AJAX请求,再执行页面跳转,这比直接设置
href更灵活。
内容的提问来源于stack exchange,提问作者hari
相关产品推荐
相关产品推荐

