Intraweb程序重新填充表格后行选中高亮JS代码失效问题求助
Intraweb程序重新填充表格后行选中高亮JS代码失效问题求助
嗨,我来帮你分析下这个问题哈!
你遇到的这个情况太常见了——问题出在你绑定事件的方式上。你现在用的$('#Posten td').click(...)是直接给页面加载时已经存在的td元素绑定点击事件,但当你重新填充表格的时候,原来的那些td和tr元素都被新生成的DOM节点替换掉了,这些新节点根本没被绑定点击事件,自然就触发不了高亮逻辑了。
给你个简单的解决办法,换成jQuery的事件委托来绑定事件就行。原理就是把点击事件绑定到一个不会被替换的父容器上(比如你的#Posten容器),让它来监听子元素的点击,不管表格被刷新多少次,新生成的元素都能触发事件。
修改后的JS代码如下:
$('#Posten').on('click', 'td', function () { var k = $(this); k.closest("table").find("tr.Kies").removeClass("Kies"); k.closest("tr").addClass("Kies"); ajaxCall("LeesRegel", "Params=" + k.closest("tr").attr('ID')) });
简单说下这个写法的逻辑:我们把点击事件绑定到#Posten这个稳定的父容器上,当点击事件从子元素td冒泡到这里时,jQuery会检查触发事件的目标是不是我们指定的td,如果是就执行后面的处理函数。这样不管你重新生成多少次表格,新的td元素的点击都能被正确捕获到。
另外你可以顺便确认下,重新填充表格的时候,新生成的tr有没有正确设置ID属性,确保ajaxCall的参数也能正常传递哦。
备注:内容来源于stack exchange,提问作者jvm
相关产品推荐
相关产品推荐

