HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目

HTML select, correct option selected in DOM, but wrong item shown in firefox

本文关键字:选择 firefox 显示 错误 项目 但在 DOM HTML 选项      更新时间:2023-09-26

这实际上是从另一个SO问题中整理出来的问题。

在这里的jsFiddle示例中http://jsfiddle.net/5WrcD/2/show/当您更改一个select时,另一个会同步值。请在打开Firebug并展开两个select菜单的情况下尝试此操作。

当您第一次加载页面并将first select更改为20时,两者上的selected="selected"在DOM中都将变为20,但不会在显示中显示。

你知道为什么会发生这种事吗?

该示例使用Ember.js库,但无论如何,显示应该反映DOM状态,对吗?

这个错误只发生在Firefox中,这是一个特定于Firefox的问题

适用于Chrome/Safari,而不是FF。也许这两个Ember.js警告意味着:

  1. 警告:默认情况下,计算属性很快将可缓存。若要在应用程序中启用此功能,请设置ENV.CP_DEFAULT_CACHEABLE = true。构件-0.9.8.1.js(第65行)

  2. 警告:{{view}}帮助程序影响模板的方式即将更改。以前,子视图中的模板会使用新视图作为上下文。很快,视图将在渲染其模板时保留其父上下文。您可以通过设置ENV.VIEW_PRESERVES_CONTEXT = true提前选择加入新行为。有关详细信息,请参阅https://gist.github.com/2494968.你应该尽快更新你的模板;此默认设置将很快更改,并且该选项将在1.0版本之前完全取消。


更新#1:

看起来关闭所有选定的(在创建图元之后)也会有所帮助。附加到脚本末尾:

setTimeout( function (){ $('option').prop('selected',false); } , 100 );
// Anonymized as per Fabrício Matté's suggestion

注意:可能有一个回调可以在中执行,而不是在100毫秒后自动运行。


更新#2:

看起来也不是设置选项的属性,而是可以删除Ember创建的内容:

App.myController = Ember.Object.create({
   //content: 10    /* comment out, remove, or set to '' instead of 10 */
});

注意:我不使用Ember,所以我不知道这是否会影响

我刚刚通过为select元素设置val解决了一个类似的问题。

我的select有两个条目,我想以编程方式激活第二个条目(jQuery),这可以通过更改selected属性来完成,但Firefox 17.0没有重新绘制选择,它没有显示新选择的option

<select id="yesno">
<option value="true" selected="selected">Yes</option>
<option value="false">No</option>
</select>

这个jQuery Snippet做到了,现在我在FF 17.0中看到了选择"否",当以编程方式修改它时:

var yesnosel = $("#yesno");
yesnosel.val("false");
yesnosel.find("option").removeAttr("selected");
yesnosel.find("option[value='false']").attr("selected", "selected");

设置val可能已经足够了,但我也想要一个更新的selected option

jQuery=)的几行

http://jsfiddle.net/xXC9t/