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

Laravel foreach循环中jQuery拼接ID仅获首个值的解决方法

解决Laravel Blade循环中jQuery获取所有循环项ID及对应元素值的问题

第一步:修正Blade模板的错误

你的Blade模板里存在标签关联错误,<label>的for属性需要对应每个radio的唯一ID,否则点击标签无法触发radio选中状态:

@foreach ($rentalcategories as $category)
  <div class="checkbox checkbox-success">
    <input type="text" value="{{ $category->id }}" class="catid">
    <input type="radio" name="rentalcategory" class="rentalcattitle" id="rentalcat{{ $category->id }}" value="{{ $category->id }}">
    <label for="rentalcat{{ $category->id }}" class="control-label"> {{ $category->rentalcat_title }}</label><span>({{ $category->rentalhses->count() }})</span>
  </div>
@endforeach

第二步:用jQuery正确获取所有循环项的ID及对应元素状态

你当前的jQuery代码只返回第一个.catid的值,因为直接调用.val()仅作用于第一个匹配元素。要处理所有循环项,需要通过遍历实现:

方式1:遍历所有循环项,逐个获取ID和对应radio状态

// 遍历所有.catid元素
$(".catid").each(function() {
    var categoryid = $(this).val();
    console.log(categoryid);
    // 获取对应radio的选中状态与值
    var targetRadio = $('#rentalcat' + categoryid);
    var hsecategory = targetRadio.prop('checked') ? targetRadio.val() : '';
    console.log(`分类ID: ${categoryid}, 选中状态值: ${hsecategory}`);
});

方式2:直接获取当前选中的radio(仅需选中项时使用)

由于你的radio是同名name="rentalcategory",同一时间仅能选中一个,若只需获取选中项的信息,可简化代码:

// 筛选出选中的radio元素
var checkedRadio = $("input[name='rentalcategory']:checked");
if (checkedRadio.length > 0) {
    var categoryid = checkedRadio.val();
    console.log(categoryid);
    var hsecategory = categoryid;
}

关键提示

  • 当jQuery选择器匹配多个元素时,直接调用.val()、.prop()等方法只会处理第一个元素,必须用.each()遍历才能覆盖所有项。
  • 同名radio组天然互斥,仅需选中项时,用:checked筛选是最高效的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:09:21