javascript - 使用 jQuery 显示/隐藏多个 <span>

标签 javascript jquery

我试图在单击按钮时显示和隐藏表格中的多个元素。该表是使用 PHP for 循环生成的

echo "<tr> ";
echo "<td style='text-align:center'>$stock_date</td>";
echo "<td style='text-align:center'>$store_name</td>";
echo "<td style='text-align:center'>$store_city</td>";
echo "<td style='text-align:center'>$global_currency_sign ".number_format($opening_stock,2)." <br/> </td>";
echo "<td style='text-align:center'>$global_currency_sign ".number_format($wastage,2)."</td>";
echo "<td style='text-align:center'>$global_currency_sign ".number_format($purchases,2)." <br/>";
echo "<span id='averages' style='visibility:hidden;'>$global_currency_sign ".number_format($avg_purch,2)."</span></td>";
echo "<td style='text-align:center'>$global_currency_sign ".number_format($sales,2)."</td>";
echo "<td style='text-align:center'>$global_currency_sign ".number_format($closing_stock,2)."</td>";

然后我让 jQuery 执行以下操作

$('#show_averages').click(function(event){


if(document.getElementById("averages").style.visibility == 'hidden')
{
        document.getElementById("averages").style.visibility = 'visible';
}

else if(document.getElementById("averages").style.visibility == 'visible')
{
        document.getElementById("averages").style.visibility = 'hidden';
}

});

但是它仅适用于它找到的第一个 id="averages"。我怎样才能让它显示 id="averages"的所有元素?

最佳答案

ID (#) 用于标识页面上仅出现一次的元素。一旦出现重复项,您可以按 F12 打开开发人员控制台,您应该会看到一条错误消息它发现两个或多个具有相同 ID 的元素。当您想要具有相同属性的多个实例时,您可以给它一个CLASS (.)

不要使用 id 选择器 (#),而是将 td 元素更改为一起分类,如下所示:

echo "<tr> ";
                        echo "<td style='text-align:center'>$stock_date</td>";
                        echo "<td style='text-align:center'>$store_name</td>";
                        echo "<td style='text-align:center'>$store_city</td>";
                        echo "<td style='text-align:center'>$global_currency_sign ".number_format($opening_stock,2)." <br/> </td>";
                        echo "<td style='text-align:center'>$global_currency_sign ".number_format($wastage,2)."</td>";
                        echo "<td style='text-align:center'>$global_currency_sign ".number_format($purchases,2)." <br/>";
                        echo "<span class='averages' style='visibility:hidden;'>$global_currency_sign ".number_format($avg_purch,2)."</span></td>";
                        echo "<td style='text-align:center'>$global_currency_sign ".number_format($sales,2)."</td>";
                        echo "<td style='text-align:center'>$global_currency_sign ".number_format($closing_stock,2)."</td>";

然后选择您的元素,如下所示:

$('#show_averages').on('click', function(){

//your code here

})

请注意,您可能需要更改 jQuery(或您的情况下的原始 JS)以按类名进行选择,因为它们不再具有以前的 ID。如果您选择使用 vanilla JS,则必须在代码中使用类似的内容:

Document.getElementsByClassName('averages')

否则,您可以选择所有这些元素

var myAverages = $('.averages');

myAverages.each(function(){

  //this will loop through each of the average td elements and perform whatever code youd like here. You can reference each element with

  $(this).whatever....

})

关于javascript - 使用 jQuery 显示/隐藏多个 <span>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52222625/

相关文章:

javascript - 显示有关另一个事件的自动完成建议

javascript - 简单的 Javascript 调用功能不起作用/不知道如何让它工作

javascript - 带有扩展拉丁字母的正则表达式 (ä ö ü è ß)

javascript - 使用 Angular 不在 HTML 上更新值

javascript - 使用 AngularJS 1.7 中的组件在 NgRepeat 中正确渲染 HTML

javascript - 嵌套 JSON : How to add (push) new items to an object?

javascript - DataTables - 如何使用我自己的按钮进行导出?

javascript - 我如何停止 bjqs slider

javascript - 如何将数据从 WebAPI 方法流式传输到 JavaScript 客户端

jQuery如何仅在内部元素上执行事件