从foreach循环获取标记id到jquery

时间:2017-06-20 09:21:37

标签: php jquery

我有从数据库中提取的每个客户的发票链接。

foreach ($customerTables as $value) {
 <td><a id='show' href='invoice.php?invoice=$value->id'>Invoice</a></td>
}

所以当用户点击发票链接时,我想显示加载页面如下

<p><i class="fa fa-cog fa-spin fa-3x fa-fw"></i>
<span class="sr-only">Loading...</span></p>

我使用的javascript是:

$(document).ready(function(){
    $("p").hide();
 });
$("#show").click(function(){
    $("p").show();
 });

但它仅适用于第一行发票链接。我怎样才能使这个工作对每一串发票都有效​​?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

那是因为你使用的是id而不是类。 Id应该是唯一的,所以jquery专注于第一次出现。

尝试替换

attribute_before_last_save

通过

id='show'

class='show'

通过

$("#show").click(function(){

答案 1 :(得分:0)

您无法在单页中多次使用相同的ID,因此请将其替换为类,如下所示

foreach ($customerTables as $value) {
 <td><a class='show' href='invoice.php?invoice=$value->id'>Invoice</a></td>
}

还需要为单击链接时需要显示/隐藏的p标记提供class或id。因为如果你直接隐藏/显示p标签,它将影响该页面内的所有其他p标签。所以你可以使用类似下面的内容,

<p class="loader"><i class="fa fa-cog fa-spin fa-3x fa-fw"></i>
<span class="sr-only">Loading...</span></p>

然后你可以像这样编写你的js代码,

$(document).ready(function(){
    $("p.loader").hide();
 });
$(".show").click(function(){
    $("p.loader").show();
 });