我有一个从MySQL中提取的自动刷新表(工作),以便在过去10秒内更新信息。该表位于包含的php文件中,因此我可以使用.load()将其调用以进行刷新。
使用我在互联网上找到的帮助,我能够成功制作一个jquery脚本,突出显示并选择您单击的行。当表格是静态的时候它起作用了,但现在它不再是动态的(自动刷新)。
对JQuery知之甚少,如何保留点击在该数字上的AKA的行的值,因此当用户点击"确认选择"时,该数字将通过提交表格。
例如; 在查看列表时,我看到两个因素:" 0008"和" 0009"。我点击" 0008",表格刷新,0008可能会或可能不在列表中。但是,当我点击它时,它会保留" 0008",所以当我点击"确认选择"时,值" 0008"通过了。
截至目前,警报刚刚弹出并说," undefined"。 (我应该补充一点,我也试过.text()而不是.html())
<script src="java/jquery.js"></script>
<script>
function refreshInfoBox() {
$('#infobox').load('refreshtable.php');
setTimeout(refreshInfoBox, 10000);
}
setTimeout(refreshInfoBox, 10000);
$(document).ready(function() {
refreshInfoBox();
$("#tableinfo tr").click(function(){
$(this).addClass('selected').siblings().removeClass('selected');
var value=$(this).find('td:first').html();
});
$('.select').on('click', function(e){
alert($("#tableinfo tr.selected td:first").html());
});
});
</script>
<div id="fixed">
<?php
include("topmenu.php");
?>
<div id="backpanel">
<div id="infobox">
<?php
include("refreshtable.php");
?>
</div>
<input type="button" name="OK" class="select" value="Confirm Selection"/>
</div>
</div>
refreshtable.php
<table id ="tableinfo">
<tr><th width="12%">ID#</th>
<th width="8%">HEADER2</th>
<th width="40%">HEADER3</th>
<th width="40%">HEADER4</th>
</tr>
$query= $db->prepare("SELECT * FROM dbtable ORDER BY dbtime");
$query->execute();
$count = $query->rowCount();
if($count > 0)
{
while($info = $query->fetch())
{
?>
<tr>
<td><?php echo $info['id']; ?></td>
<td><?php echo $info['field2']; ?></td>
<td><?php echo $info['field3']; ?></td>
<td><?php echo $info['field4']; ?></td>
</tr>
<?
}
}?></table>
答案 0 :(得分:0)
您的jQuery $("#tableinfo tr").click(function(){
绑定到您网页中的DOM元素。不是任何具有该id的DOM元素,而是该元素的显式实例,即当时存在的元素。
当您的刷新脚本运行时,表将替换为新表。它可能与旧表具有相同的ID,但它不是您的函数绑定的表,因此您的函数无法引用它。
您可以每次将函数重新绑定到新表,但更好的方法是只获取您实际需要的数据。
您可以轮询服务器以获取更新,而不是重新加载整个表,将它们作为最小JSON返回,并使用ajax调用的success函数将它们作为新行插入到表中。数据开销会减少,用户体验会更好。
鉴于你对jQuery的了解甚少,但这可能还没有多大意义。以append函数为出发点。