PHP生成的表格无法被JS脚本识别,控制台执行JS功能正常
解决PHP生成表格后JS行选择功能失效的问题
问题根源
你的JS代码执行时机不对——在页面里的DOM元素(包括PHP动态生成的表格行)还没完全加载出来的时候,就已经执行了事件绑定操作。这时候#datatablesSimple tr根本不存在,自然绑定不上点击事件。而你在浏览器控制台手动执行代码时,整个页面的DOM已经渲染完毕,所以事件能正常生效。
两种解决办法
办法一:把JS代码挪到页面最底部
直接把你的JS代码放到HTML文档的</body>标签前面,这样JS执行时,所有DOM元素都已经加载完成,能顺利找到表格行并绑定事件。
办法二:用DOM加载完成事件包裹代码
借助jQuery的$(document).ready()方法,确保JS代码只在整个DOM加载完成后才执行,代码修改如下:
$(document).ready(function() { $("#datatablesSimple tr").click(function(){ $(this).toggleClass('selected'); var value=$(this).find('td:first').html(); alert(value); }); $('.ok').on('click', function(e){ var selected = []; $("#datatablesSimple tr.selected").each(function(){ selected.push($('td:first', this).html()); }); alert(selected); }); });
额外要注意的小问题
你的PHP代码里,表头(<thead>)和表脚(<tfoot>)只定义了2个表头单元格,但循环生成的每行数据有3个单元格(姓名、邮箱、状态),表格结构不统一,可能会导致样式错乱或者其他交互问题,建议把表头和表脚也改成3个单元格:
<thead> <tr> <th>Name</th> <th>Email</th> <th>Status</th> </tr> </thead> <tfoot> <tr> <th>Name</th> <th>Email</th> <th>Status</th> </tr> </tfoot>
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

