Php 单击动态生成表的事件赢得';t火
我有一些jQuery,它在单击表行时处理表行上的单击事件,表行是用PHP构建的。只要表构建在同一个文件中,它就可以正常工作。但是,如果我让jQuery转到一个PHP文件,让PHP构建表,然后将输出发送回以写入div标记,那么它将不起作用。我尝试过在活动中添加.live,但也没有成功?有什么建议吗 html和jQuery:Php 单击动态生成表的事件赢得';t火,php,jquery,events,html-table,click,Php,Jquery,Events,Html Table,Click,我有一些jQuery,它在单击表行时处理表行上的单击事件,表行是用PHP构建的。只要表构建在同一个文件中,它就可以正常工作。但是,如果我让jQuery转到一个PHP文件,让PHP构建表,然后将输出发送回以写入div标记,那么它将不起作用。我尝试过在活动中添加.live,但也没有成功?有什么建议吗 html和jQuery: <html> <head> <script type='text/javascript' src='jquery.js'&
<html>
<head>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var name;
var text;
var subject;
var id;
var key;
$(document).ready(function(){
buildMsgTable();
//Load Message Data in click
$('#messages tr').click(function(){
$(this, 'tr').each(function(index, tr) {
var lines = $('td', tr).map(function(index, td) {
return $(td).text();
});
key = lines[0];
name = lines[1];
textarea = lines[2];
subject = lines[3];
//alert(textarea);
$('#name').val(name);
$('#subject').val(subject);
$('#body').val(textarea);
})
});
function buildMsgTable(){
$.post('/php_webfiles/edit/buildMsgTable.php',
{},
function(output){ $('#existingMessagesDiv').html(output); });
}
</script>
</head>
</body>
<div id='existingMessagesDiv'></div>
<div id = 'debug'></div>
</body>
</html>
变量名;
var文本;
var主体;
变量id;
var键;
$(文档).ready(函数(){
buildMsgTable();
//在单击中加载消息数据
$('#messages tr')。单击(函数(){
$(这是“tr”)。每个(函数(索引,tr){
变量行=$('td',tr).map(函数(索引,td){
返回$(td.text();
});
键=行[0];
名称=行[1];
text区域=行[2];
主题=行[3];
//警报(文本区);
$('#name').val(name);
$('主题').val(主题);
$('正文').val(文本区域);
})
});
函数buildMsgTable(){
$.post(“/php_webfiles/edit/buildMsgTable.php”,
{},
函数(输出){$('#existingMessagesDiv').html(输出);});
}
buildMsgTable调用的php:
<?php
include "hawkfunctions.php";
$tsql = "SELECT * FROM Messages";
$conn = mssqlConnect();
$stmt = sqlsrv_query($conn, $tsql);
//$stmt2 = sqlsrv_query($conn, $tsql2);
if ($stmt1 === false) {
echo "Error in query preparation/execution (contacts_in_list).<br/>$tsql1<br/>";
//die( print_r( sqlsrv_errors(), true));
echo "Errors while connecing attempting to run query:<br/><ol>";
$i = 1;
foreach (sqlsrv_errors() as $masterError) {
$errorlist .= "<li>Heading $i<ol>";
foreach ($masterError as $root => $error) {
if (!is_numeric($root)) {
$errorlist .= "<li><b>$root:</b> $error</li>\n";
}
}
$errorlist .= "</ol></li>\n";
$i++;
}
$errorlist .= "</ol>";
die($errorlist);
}
echo "<table border='1' id= 'messages'><th>Key</th><th>Name</th><th>Text</th><th>Subject</th>";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
echo "<tr><td class='key'>";
echo $row['MessageKey'];
echo "</td>";
echo "<td class = 'name'>";
echo $row['Name'];
echo "</td><td class = 'text'>";
echo $row['Text'];
echo "</td><td class = 'subject'>";
echo $row['Subject'];
echo "</td>";
echo "<td class = 'delete'>";
echo "<input type='button' value='Delete' id='delete' onclick='deleteMessage(".$row['MessageKey'].")' />";
echo "</td>";
echo "</tr>";
}
/* Free statement and connection resources.*/
sqlsrv_free_stmt( $stmt);
sqlsrv_close($conn);
echo "</table>";
?>
如果你使用jQuery 1.7+(你应该),你应该使用.on()
。但是你需要将你的代码(主要是javascript)发布给这里的人来帮助你。如果你想把代码拼凑在一起不泄露任何sql内容,我会编辑你是否尝试过$(文档)。on('click','#messages tr',function(){
?还没有试过,为了方便起见,我现在就用just alert()试试