jQuery не работает с элементами, отображаемыми через PHP - PullRequest
2 голосов
/ 09 мая 2011

У меня есть PHP-код, который генерирует html-таблицу из базы данных mysql, а затем я пытаюсь использовать аддон 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>\n";
// 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>\n";
}
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>

ОБНОВЛЕНИЕ: по какой-то причине в синтаксисе тега end / script> теряется цвет источника представления хрома

Ответы [ 5 ]

1 голос
/ 09 мая 2011

TableSorter Для работы плагина требуются теги THEAD и TBODY в таблице

0 голосов
/ 27 января 2012

Позднее пришествие на эту вечеринку, но вам нужно знать, что документ. Уже не будет получать динамически генерируемый html, если этот html генерируется ПОСЛЕ первоначальной загрузки dom. Для этого есть плагины jQuery (liveQuery - один из них), но событие Document.Ready запускается один раз за загрузку страницы, и если PHP, который генерирует html, запускается ПОСЛЕ того, то вызываемый вами метод tableorter не имеет никакого отношения к сортировать.

0 голосов
/ 09 мая 2011

Javascript - это клиентская технология, означающая, что для работы с элементами, сгенерированными непосредственно сервером через php, требуется некоторая гимнастика.

Попробуйте прочитать о функции json_encode () в PHP и вызовах ajax в целом.

Кроме того, вас может заинтересовать метод jdeuate .delegate ().

0 голосов
/ 09 мая 2011

Вы должны добавить идентификатор для таблицы с «mytable».

Также всегда помещайте thead, tbody в теги таблицы для лучшего вывода при использовании JQuery.

0 голосов
/ 09 мая 2011

Вы не указали элемент #mytable.

Вам необходимо использовать селектор, который соответствует элементу, который на самом деле существует .

РЕДАКТИРОВАТЬ: Ваш PHP содержит неправильно вложенные кавычки, поэтому идентификатор фактически отсутствует в строке.
Посмотрите на исходный код страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...