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

请排查含jQuery操作的Laravel Blade模板代码中的错误

你的Laravel Blade代码中影响jQuery操作的问题排查

首先先把你的代码格式化一下,方便看清问题:

@foreach($deductionrules as $deductionrule)
    <tr>
        <td><b>{{ $deductionrule->leavePenalty }}</b></td>
        <td><b>{{ $deductionrule->absentPenalty }}</b></td>
        <td><b>{{ $deductionrule->latePenalty }} | {{ $deductionrule->deductionId }}</b></td>
        <td align="center">
            <button class="btn btn-danger delete-deductionrules" data-iddeductionrules="{{ $deductionrule->deductionId }}" >
                <i class="fa fa-trash"...
        </td>
    </tr>
@endforeach

下面是具体的问题(这些问题会直接影响jQuery的正常操作):

  • 未闭合的HTML标签:
    你的<button>和<i>标签都没有完成闭合(<i>标签只写了开头,<button>也没有</button>)。这种DOM结构不完整的情况会导致浏览器解析DOM树出错,jQuery无法正确定位到.delete-deductionrules按钮元素,后续的点击事件绑定、数据属性读取都会失效。
    修复建议:补全闭合标签,比如改成:

    <button class="btn btn-danger delete-deductionrules" data-deduction-id="{{ $deductionrule->deductionId }}">
        <i class="fa fa-trash"></i> 删除
    </button>
    
  • 数据属性命名不规范(影响可读性与后续jQuery取值):
    你用了data-iddeductionrules作为自定义数据属性,虽然语法上符合HTML规范,但这种连写的命名方式可读性差,也不符合HTML5数据属性的常规命名习惯(应该用短横线分隔的小写命名)。后续用$(this).data('iddeductionrules')取值时,容易拼写错误。
    修复建议:改成data-deduction-id,后续jQuery取值可以用更直观的$(this).data('deductionId')或者$(this).data('deduction-id')(jQuery会自动处理驼峰转换)。

  • 动态DOM元素的事件绑定陷阱:
    因为这些按钮是通过@foreach循环动态生成的DOM元素,如果你的jQuery代码是直接用$('.delete-deductionrules').click(function(){...})绑定事件,那么只有页面初始加载时存在的元素会绑定事件,后续动态生成的按钮(比如分页加载更多规则时)不会触发事件。
    修复建议:使用事件委托方式绑定事件,比如:

    $(document).on('click', '.delete-deductionrules', function(e) {
        e.preventDefault();
        const deductionId = $(this).data('deduction-id');
        // 后续的删除逻辑
    });
    

    这样不管元素是初始存在还是动态生成的,只要匹配选择器就能触发事件。

  • 代码排版混乱:
    原代码所有内容挤在一行,不仅难以阅读,也容易导致标签遗漏、语法错误,调试起来非常麻烦。建议养成良好的代码排版习惯,按HTML结构换行缩进。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:26:23