【发布时间】:2011-03-27 18:21:06
【问题描述】:
具体问题在这个(很长的)序言的末尾。抱歉,我试着让它尽可能短。 (花了一个多小时来写这个问题)。
.php 文件使用 (php) 函数读取 SQL 数据库中的行并动态创建 HTML 表。
对于每一行,通过$book['id']、$book['code']、$book['description']等返回SQL数据。
$book['code'] 是一个由两个字符组成的字母数字 ID,例如。 B7 或 DW
在每一行的 HTML 中都有一个 <td></td>,其中包含一个带有 onclick= 事件的锚标记,该事件运行 JQuery 脚本(显示/隐藏该行的元素)。
假设点击了几行或几行,并且嵌入的 JQuery 脚本隐藏了几个元素(顺便说一句,它工作正常)
当用户查看不同的页面然后返回到该页面时,隐藏的元素(被 JQuery 脚本隐藏的)不再隐藏。
我希望为每个单击的行保留一串$book['code'] 值,并在返回第一页时解析该字符串以重置隐藏元素。
<?php
function render_row_from_mysql() {
$output .= '
...create header row...
foreach ($books as $book)
{
create table row cells 1, 2, 3, 4
after cell 4:
<td>
<a id="addToShelf.php" onclick="
jQuery.ajax(\'./addToShelf.php?id='.$book['id'].'ats'.'\');
jQuery(addToShelfLink'.$book['id'].')[0].style.display = \'none\';
jQuery(rfs'.$book['id'].')[0].style.display = \'block\';
jQuery(mt'.$book['id'].')[0].style.display = \'none\';
jQuery(grn'.$book['id'].')[0].style.display = \'block\';
return false;
">
add to bookshelf
</a>
</td></tr>' ;
}
}
问题:
为什么上面运行正常的 JQuery 代码不需要右括号?
在锚标记中创建/更新 var 的语法是什么,以保留累积的点击行数据?我问是因为我的许多尝试都破坏了代码。
是否应该在函数顶部、foreach 循环之前初始化 var?
-
我尝试使用 PHP 通过在“return false;”之后插入以下代码来创建/更新 cookie; (见下文)。下面的 php 代码确实在粘贴到单独的脚本中进行测试时会创建一个 cookie。) php 代码不会触发。为什么?
【问题讨论】:
-
如果您将 php 和 jquery 代码分开可能会更容易。而不是在 a 标记中编写 onclick,只需添加和分类并在文档准备好时注册 click 事件......可能会使调试更容易。