php - 为什么不是 js / jquery 事件在 PHP foreach 中工作
问题描述
我了解 foreach 但这对我来说是新的,因为在 PHP 的 foreach 中,我为每个显示的项目都有一些脚本,并且想知道为什么它只适用于第一个项目中的项目
在代码中,我从 MYSQL 数据库中获取图像。而不是在 js 中使用 onclick 我正在学习更多关于 jquery 的知识,只有当我单击第一张图像时,它才会生成
$("#main").load("includes/product.php");
路径并更改我想要更改但在产品名称和购物车按钮中不会更改视觉效果。
<section id="new-products" class="clearfix">
<div class="title-block">
<h4>New Products</h4>
</div>
<?PHP
foreach ($item as $items){
?>
<div class="left-col-block">
<article class="product-box clearfix">
<a href="#store/category/<?PHP echo $items['category'];?>/<?PHP echo $items['brand'];?>/<?PHP echo $items['name'];?>" id="product-link">
<img src="<?PHP echo $items['image']; ?>" alt="Card Games" title="Card Games" height="80" width="80">
</a>
<a href="#store/category/<?PHP echo $items['category'];?>/<?PHP echo $items['brand'];?>/<?PHP echo $items['name'];?>" id="product-link"><?PHP echo $items['name']; ?></a><br>
<span class="price">$<?php echo $items['price'];?></span>
<a href="#store/category/<?PHP echo $items['category'];?>/<?PHP echo $ ['brand'];?>/<?PHP echo $items['name'];?>" id="product-link" class="button tiny right icon-basket"></a>
</article>
`<script>
$( "#product-link" ).click(function() {
$("#main").load("includes/product.php");
});
</script>
</div>
<div class="left-col-block">
</div>
<?PHP
}
?>
</section>
预期:我希望每个带有 product-link id 的链接在每个产品和每个 id 上使用 jquery 提供事件触发器
实际结果:
$("#main").load("includes/product.php");
仅适用于等于 product-link 的第一个 id
解决方案
找到答案是
<script>$( ".product-box a" ).click(function() {
$("#main").load("includes/product.php");
});</script>
因为 product-bot 是一个类,我没有意识到 # 使它检查 id 和。使它搜索一个类,并且类可以被多次调用,而 id 必须是唯一的
推荐阅读
- python - 是否有任何 python 代码可以在不使用 ImageMagick 或 Ghost 脚本的情况下将多页 pdf 转换为图像
- angular - 无法使用 Karma 和 Jasmine 测试 Angular http 拦截器
- scala - 连接以形成列表 scala
- c++ - LNK2019 使用带有静态链接的静态成员
- ffmpeg - 如何对存储库中的所有视频应用 ffmpeg 命令?
- scala - 如何根据一组列值更新 Spark Dataframe 中的列?
- node.js - 托管一个简单的节点 API
- php - 如何在 php 中通过 jQuery Ajax 在数据库中插入数据
- java - 在当前主题中找不到样式“floatingActionButtonStyle”
- vba - 如何在 VBA 中从 Outlook 发件箱发送所有电子邮件