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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery不适用于通过PHP回显的元素相关的知识,希望对你有一定的参考价值。

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

这是代码:

<html><head>
<title>MySQL Table Viewer</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="http://tablesorter.com/jquery.tablesorter.min.js"></script>
<script src="http://tablesorter.com/addons/pager/jquery.tablesorter.pager.js"></script>
<script>
$(document).ready(function() 
{ 
    $("#mytable").tablesorter(); 
} 
); 
</script>
</head><body>
<?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 "<h1>Table: {$table}</h1>";
echo "<table id="mytable" border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
    $field = mysql_fetch_field($result);
    echo "<td>{$field->name}</td>";
}
echo "</tr>
";
// printing table rows
while($row = mysql_fetch_row($result))
{
    echo "<tr>";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
    foreach($row as $cell)
        echo "<td>$cell</td>";

    echo "</tr>
";
}
mysql_free_result($result);
?></table>
</body>
</html>

输出是:

<html><head>

<script src="../js/jquery_plugin.tablesorter.min.js"></script>

<script src="../js/jquery-1.6.min.js"></script>

<script src="../js/jquery_plugin.tablesorter.pager.js"></script>

<title>MySQL Table Viewer</title></head><body>

<h1>Table: lobby</h1><table id="mytable" border='1'><thead><tr><td>tableid</td>    <td>name</td><td>datecreated</td><td>active</td></tr></thead> 
<tbody><tr><td>12341231241</td><td>Oyunum1</td><td>2011-05-09 14:26:51</td><td>0</td>    </tr> 
<tr><td>6677768</td><td>m2</td><td>2011-05-05 14:26:39</td><td>1</td></tr> 
<tr><td>ddf1</td><td>m3</td><td>2011-05-09 14:27:19</td><td>0</td></tr> 
<tr><td>7856844444</td><td>m4</td><td>2011-05-09 14:27:31</td><td>0</td></tr> 
<tr><td>xxxxde4rfd</td><td>m5</td><td>2011-05-09 14:27:43</td><td>0</td></tr> 
</tbody></table>

</body></html>

<script>

$(document).ready(function() 

{ 

    $("#mytable").tablesorter(); 

} 

); 

</script>

更新:由于某些原因,在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方法就没有了分类。

以上是关于jQuery不适用于通过PHP回显的元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 对 Mysql 的 Ajax JQuery 请求不适用于 JSON

如何控制单选按钮?从数据库、PHP、MYSQL 回显的数据

Jquery .change() 函数不适用于动态填充的 SELECT 列表

jQuery 类选择器不适用于数据表中 JSON 生成的元素

对 PHP API 的 Axios GET 请求不适用于自定义标头

Element Select 回显