3

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

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

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

知道为什么会这样吗?

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

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

4

3 回答 3

2

我刚刚通过val为选择元素设置了类似的问题。

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

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

这个 jQuery-Snippet 成功了,现在我在以编程方式修改它时看到 FF 17.0 中的选择“No”:

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

设置val可能就足够了,但我还想要一个更新的selected option.

于 2012-12-05T09:45:28.340 回答
2

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

  1. 警告:默认情况下,计算属性很快就会被缓存。要在您的应用中启用此功能,请设置ENV.CP_DEFAULT_CACHEABLE = true. ember-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,所以我不知道这是否会影响任何事情

于 2012-09-01T00:50:19.153 回答
0

几行 jQuery =)

http://jsfiddle.net/xXC9t/

于 2012-09-01T02:15:15.407 回答