You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery+Laravel中多个元素存在同名class时如何获取指定对应值

问题根源

使用全局类选择器$(".id")、$(".prod_id")取值时,jQuery会匹配页面内所有符合条件的元素,.val()方法默认仅返回第一个匹配元素的数值,因此无论点击哪个商品的按钮,都会返回第一条数据的对应值。

解决方案

基于点击事件的触发上下文,先定位当前商品的父容器,再从父容器范围内查询对应字段即可:

$(".plus").click(function(e) {
  // 定位当前点击按钮所属的商品容器
  const currentCartItem = $(this).closest('.number-input');
  // 仅在当前商品容器内查询对应字段值
  const id = currentCartItem.find('.id').val();
  const product_id = currentCartItem.find('.prod_id').val();
  const quantity = currentCartItem.find('.quantity').val();
  
  console.log(id);
  console.log(product_id);
  // 原有后续逻辑保持不变
  ...
});
补充优化建议

你当前的Blade代码中输入框设置了固定id="qty",如果是循环渲染多个商品的场景,会导致页面出现重复ID,不符合HTML规范。如果不需要用到ID选择器可以直接删除该属性,如需保留可以改为动态拼接ID,例如id="qty_{{ $cart->id }}"。

内容的提问来源于stack exchange,提问作者Catto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:15:10