问题描述
我试图在 Laravel 循环中使 js 动态化。
我的意图是在从“产品”选择中选择产品时,加载其值。
Laravel 视图:
@for ($i = 0; $i <= sizeof($fibra["voz"]) - 1; $i++)
<div class="form-group">
<label for="wifi">Wifi {{ $i + 1 }}</label>
<select class="form-control wifi" name="wifi" data-repeat="{{ $i }}" required>
<option selected hidden disabled>Elige un wifi...</option>
@foreach ($wifis_inversor as $wifi_inversor)
<option data-comission="{{ $wifi_inversor->commission }}" value="{{ $wifi_inversor->name }}">{{ $wifi_inversor->name }}</option>
@endforeach
</select>
</div>
@endfor
我的jQuery代码:
var comision = $('.comision_total');
var comision_total = 0;
var comision_total_wifi = 0;
$('.wifi').change(function () {
var idRepeat = $('.wifi').attr("data-repeat");
var comision_wifi = $('.wifi[data-repeat=' + idRepeat + ']').find(':selected').data('comission');
comision_anterior = comision_total_wifi;
comision_total_wifi = comision_wifi;
comision_total = comision_total + comision_total_wifi - comision_anterior;
comision.val(comision_total);
});
我的目的是在任何选择中,产品发生变化时动态添加“佣金”。但它只适用于我的第一次选择。第二个没有。我该如何解决?
解决方法
这将从第一个匹配元素中找到属性值,而不是恰好被更改的元素:
$('.wifi').attr("data-repeat")
要从更改的元素中获取 data-repeat
值,请参阅 this
:
$(this).attr("data-repeat")
或者:
$(this).data("repeat")