jQuery不适用于通过PHP回显的元素

我有一个PHP代码,从mysql数据库生成一个html表,然后我试图使用一个jQuery插件,使表可以排序。 我有很多次这个问题,似乎无法在任何地方找到解决方案…为什么jQuery(或者是Javascript句点?)不能在PHP输出上工作? 这不是解决方法吗?

这是代码:

 MySQL Table Viewer     $(document).ready(function() { $("#mytable").tablesorter(); } );   <?php $db_host = 'localhost'; $db_user = 'root'; $db_pwd = 'lptm42b'; $database = 'sphinx'; $table = 'spheres'; if (!mysql_connect($db_host, $db_user, $db_pwd)) die("Can't connect to database"); if (!mysql_select_db($database)) die("Can't select database"); // sending query $result = mysql_query("SELECT * FROM {$table}"); if (!$result) { die("Query to show fields from table failed"); } $fields_num = mysql_num_fields($result); echo "

Table: {$table}

"; echo ""; // printing table headers for($i=0; $i<$fields_num; $i++) { $field = mysql_fetch_field($result); echo ""; } echo "\n"; // printing table rows while($row = mysql_fetch_row($result)) { echo ""; // $row is array... foreach( .. ) puts every element // of $row to $cell variable foreach($row as $cell) echo ""; echo "\n"; } mysql_free_result($result); ?>
{$field->name}
$cell

输出是:

     MySQL Table Viewer 

Table: lobby

tableid namedatecreatedactive
12341231241Oyunum12011-05-09 14:26:510
6677768m22011-05-05 14:26:391
ddf1m32011-05-09 14:27:190
7856844444m42011-05-09 14:27:310
xxxxde4rfdm52011-05-09 14:27:430
$(document).ready(function() { $("#mytable").tablesorter(); } );

更新:由于某些原因,在chrome视图源中的end / script>标记处丢失了语法着色

Javascript是一种客户端技术,意思是让它与服务器通过php直接生成的元素一起工作,有一些体操涉及。

尝试阅读PHP中的json_encode()函数和一般的ajax调用。

此外,您可能对.delegate()jQuery方法感兴趣。

tablesorter插件需要表中的THEAD和TBODY标签才能工作

你没有给出#mytable元素。

您需要使用与实际存在的元素匹配的选择器。

编辑 :您的PHP具有错误嵌套的引号,因此ID实际上不在字符串中。
查看页面源代码。

你应该用“mytable”添加表的ID。

另外,在使用JQuery时,还要将thead,tbody放在表标签中以获得更好的输出。

迟到这个派对,但是你需要知道该文件。如果在最初加载dom之后生成html,那么你将不会获取动态生成的html。 有一些jQuery插件可以解决这个问题(liveQuery就是其中之一),但Document.Ready事件每次加载会触发一次,如果生成html的PHP在此之后被触发,那么你调用的tablesorter方法就没有了分类。