在延迟()之后通过jQuery分配“选定”选项

Posted

技术标签:

【中文标题】在延迟()之后通过jQuery分配“选定”选项【英文标题】:assigning "Selected" option via jQuery after delay() 【发布时间】:2012-03-06 05:11:42 【问题描述】:

在下面的 jquery 中,两个自定义字段(customfield_13272、customfield_13273)是选择列表,只有在 customfield_13271 选择列表更改后才会填充。

我正在尝试将两个自定义字段的选定选项分配为列表中的第一个元素,这不是默认的“选择项目”选项。

除了这些字段的选定选项没有改变之外,问题在于当我尝试提醒这些选项之一的值时,它返回未定义。

我是否只需要添加一个 delay() 函数来允许填充自定义字段选项,还是我遗漏了其他内容?

顺便说一句,我的 jQuery css 指令工作正常。

<script type="text/javascript">
jQuery.noConflict()
jQuery(document).ready(function()

    jQuery('#customfield_13271').change(
    function()
    
    jQuery('#customfield_13272,#customfield_13273').css('border','4px solid orange');
    jQuery('#customfield_13272 option').first().next().attr('selected','selected');
    jQuery('#customfield_13273 option').first().next().attr('selected','selected');
    alert(jQuery('#customfield_13272 option').first().next().val());//THIS RETURNS UNDEFINED
    );
);
</script>

【问题讨论】:

我认为有必要提到 .change() 在 IE 中并不总是有效:***.com/questions/208471/… 【参考方案1】:

您可以使用psuedo selecto :eq(index) 选择指定索引处的元素。

改变这个

jQuery('#customfield_13272 option').first().next().attr('selected','selected');
jQuery('#customfield_13273 option').first().next().attr('selected','selected');

jQuery('#customfield_13272 option:eq(1)').attr('selected','selected');
jQuery('#customfield_13273 option:eq(1)').attr('selected','selected');

我认为仅设置 option 的 selected 属性不会更改 select 元素以将其显示为选定项。试试这个吧。

jQuery('#customfield_13272').val(jQuery('#customfield_13272 option:eq(1)').val());
jQuery('#customfield_13273').val(jQuery('#customfield_13273 option:eq(1)').val());

如果您想查看选择了哪个选项,请使用jQuery('#customfield_13272').val()

【讨论】:

它不工作。我相信我在主选择被更改的时间和自定义选择中根据主选择列表的值填充了相关数据之间存在时间问题。这就是为什么我要问在哪里插入延迟() 您在哪里填充自定义选择?更改事件处理程序中没有这样的代码。 在所有选择项上都有自定义的 onchange 处理程序,用于控制每个项的选项。 然后您应该在那些您填充选项的自定义事件处理程序中执行此代码。 我无权访问生成这些事件处理程序的源代码。我可以通过同一页面上的脚本绑定到它们吗?

以上是关于在延迟()之后通过jQuery分配“选定”选项的主要内容,如果未能解决你的问题,请参考以下文章

通过 jQuery 在选择菜单中添加禁用的选定选项

动态创建单选按钮并分配选定的值 PHP

通过jquery上下移动选择选项

jquery或JS创建子元素并分配一个ID [重复]

如何在延迟的情况下调用 jquery 函数 onload?

如何在延迟的情况下调用 jquery 函数 onload?