我在应用程序中使用Laravel,并且有一个关于jquery选择的问题。在我的例子中,我想将一个option.value和一个ID匹配,如果匹配,则将option标记为selected。这是我的代码:
<select id="class" name="class" class="custom-select form-control" required>
@foreach ($classes as $class)
<option value="{{ $class->id }}"
{{ old('class_id') ?? $subject->class_id == $class->id ? 'selected' : '' }}>
{{ $class->name }}</option>
@endforeach
</select>
<select id="section" name="section" class="custom-select form-control" required>
<option value="">- -</option>
</select>
在我的javascript中,它在页面末尾加载:
$(document).ready(function(){
var class_id = $('#class option:selected').val();
var section_id = $('#hidSectionID').val();
fetchSections(class_id);
setSection(section_id);
});
fetchSections(class_id(是我的ajax函数,它运行良好,并在此响应中添加*select[name="section"]*选项。
<option value="1">Option 1</option><option value="2">Option 2</option>
但我的第二个功能是,如果section选项与var section_id(来自Laravel控制器(匹配,则将其设置为选中。我尝试了不同的方法,但不起作用:
function setSection(section_id){
// Try # 1
$("select#section option[value="+section_id+"]").prop("selected", true);
// Try # 2
$("#section").val(section_id);
// Try # 3
$("#section > option").each(function(){
if($(this).val()===section_id){
$(this).attr("selected","selected");
return false;
}
});
// Try # 4
$.each($("#section option"), function(){
// alert($(this).text() + " - " + $(this).val());
});
}
我希望我已经写了足够多的代码来理解这个问题。如有任何帮助,我们将不胜感激。
正如@freedomn-m所提到的,我在调用ajax fetchSection函数后立即调用了我的setSection函数。所以我现在已经在代码中添加了jquerydelay((函数。
$("#section").delay(1000).queue(function(){
$(this).val(section_id);
$(this).dequeue();
});
而且效果非常好。