加载后jQuery触发选择选项

Posted

技术标签:

【中文标题】加载后jQuery触发选择选项【英文标题】:jQuery trigger select option after load 【发布时间】:2022-01-13 21:32:34 【问题描述】:

请问有人可以帮我写代码吗?我想在页面加载后更改选择中的选项,因为表单是用 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);

);

还有比超时更好的解决方案吗?

【问题讨论】:

也许你的意思是$(window).on( "load"...?加载后使用$(document).ready(function() ... 访问DOM。 learn.jquery.com/using-jquery-core/document-ready - 如果你想等待所有图像和 iframe 加载,你可以使用 $(window).on( "load", function() ... ) ***.com/questions/4584373/… 【参考方案1】:

您的代码中有几个问题。

第一个 $(window).load(func... 已弃用。改用$(function()...,它是$(document).ready(function 的简写

接下来,<option> 上没有 change 事件,您需要在父级 <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>

【讨论】:

您的解决方案也不起作用。所以我发现所有的“选项”都是在 on.load 中生成的。当我尝试更改选项时,选项还没有。 一旦选项确实存在,设置选择值仍然更简单

以上是关于加载后jQuery触发选择选项的主要内容,如果未能解决你的问题,请参考以下文章

jquery是怎么实现:页面加载完毕,而图片未加载完成时,触发的事件?

将页面加载到 div 中并选择特定的 jQuery UI 选项卡

jquery基础

jQuery 更改选择选项下一个上一个按钮和加载内容

ajax调用后Jquery事件不会触发

jquery.jqgrid 重新加载表格数据