请有人帮我写代码好吗?我想在页面加载后更改select中的选项,因为表单是用DOM生成的。
我不知道为什么——;onClick"它起作用了吗:
$(window).load(function() {
$( "#target" ).click(function() {
$("#filter_1 option[value=11]").attr('selected', 'selected').trigger('change');
});
});
但我想在不点击的情况下更改选择,这不起作用:
$(window).load(function() {
$("#filter_1 option[value=11]").attr('selected', 'selected').trigger('change');
});
我做错了什么?
编辑-我发现所有的"选项";当我试图改变它们的时候,它们还没有出现。工作解决方案是:
$(function() {
function changeOption() {
$("#filter_1 option[value=11]").attr('selected', 'selected').trigger('change');
}
setTimeout(function(){
changeOption();
}, 500);
});
有比Timeout更好的解决方案吗?
您的代码中存在几个问题。
第一个$(window).load(func...
已弃用。使用$(function(){...
,它是$(document).ready(function
的简写,而不是
接下来,<option>
上没有更改事件,您需要在父<select>
上触发它
最后,您可以通过设置父<select>
的值来简化选项上的attr('selected')
$(function() {
// change event listener
$('#filter_1').change(function() {
console.log('Changed value to: ', this.value);
})
// set the value and trigger the change
$('#filter_1').val(11).change()
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="filter_1">
<option value=""> ---- </option>
<option value="10"> 10 </option>
<option value="11"> 11 </option>
<option value="12"> 12 </option>
</select>