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

Laravel项目中无法获取foreach循环内选中卡片ID的问题求助

问题解决:无法获取选中月份卡片的ID

问题原因

你把ID属性加在了卡片内部的<a>标签上,但点击事件绑定在了外层的.getmonthsale(<div class="card">)元素上。触发点击事件时,$(this)指向的是这个没有ID的div,所以调用attr("id")会返回undefined。

解决方法

下面两种方法任选其一即可:

方法1:将ID移到外层卡片元素上

修改Blade循环里的卡片div,把id="{{ $item }}"从<a>标签移到.getmonthsale所在的div上:

<div class="row">
  @foreach ($getmonths as $item )
    <div class="col-4 col-lg-2 mb-4">
      <!-- 将id属性移到这里 -->
      <div class="card maincard h-100 align-items-center getmonthsale" id="{{ $item }}">
        <a href="#" value ="{{ $getmonths[0] }}" name="{{ $item }}">
          <div class="row row-bordered g-0">
            <div class="card-header d-flex align-items-center justify-content-between pb-0 pt-3 mb-0">
              <div class="card-title text-center d-flex align-items-center mb-0">
                <h6>{{$item}}</h6>
              </div>
            </div>
          </div>
        </a>
      </div>
    </div>
  @endforeach
</div>

你的原有JS代码不需要修改,现在$(this).attr("id")就能正确拿到月份+年份的ID了。

方法2:修改JS代码,获取子元素的ID

如果不想改动HTML结构,调整JS代码,通过父元素找到内部的<a>标签并获取它的ID:

$(".getmonthsale").on("click", function(e) {
  e.preventDefault();
  // 找到卡片内的a标签,获取它的id
  var requested_to = $(this).find("a").attr("id");
  alert(requested_to);
  
  // 后续AJAX请求逻辑示例
  /*
  $.ajax({
    url: "/your-api-endpoint",
    method: "GET",
    data: { month_year: requested_to },
    success: function(response) {
      // 更新表格数据的逻辑
    }
  });
  */
})

额外优化建议

<a>标签的value属性不符合HTML规范,建议使用data-*自定义属性来存储额外数据,比如:

<a href="#" data-month-year="{{ $item }}" name="{{ $item }}">

之后在JS中可以通过data()方法更优雅地获取:

var requested_to = $(this).find("a").data("month-year");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:16:18