我试图实现非常简单的<select>行为:如果用户取消更改,则恢复到以前的值。事实上,我成功了,但这花了我几个小时,而且我仍然对实施不满意,因为它不是那么明显和棘手。
所以,这是模板:
<select id="states" class="form-control" name="states" [ngModel]="selectedState"
(ngModelChange)="onStateChange(selectedState, $event)">
<option [ngValue]="null">All</option>
<option *ngFor="let state of states" [ngValue]="state">{{state.name}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
和组件:
export class AppComponent {
selectedState: State = null;
states: State[] = [
{ name: 'Alabama', population: 100000 },
{ name: 'Alaska', population: 50000 }
];
onStateChange(previousState: State, state: State): void {
// If we're changing state from "All" to any, it's OK
if (previousState === null) {
this.selectedState = state;
return;
}
// Otherwise we want the user to …Run Code Online (Sandbox Code Playgroud) iframe我的页面上有几个s。有一些元素test内部带有类名。我需要style为它们设置任何一个。
当我只有一个时iframe,我可以使用下一个构造:
$('#iframeId').contents().find('.test').css({background: '#f00'});
Run Code Online (Sandbox Code Playgroud)
但我有几个iframe,所以最好不要设置混凝土iframe并使用如下结构:
$('.test').css({background: '#f00'});
Run Code Online (Sandbox Code Playgroud)
但这当然行不通。
我getElementsByClassName之前用过native,但是在 中不起作用IE8,出现缺陷。
这可能是一个愚蠢的问题,但是..有没有类似的结构:
$(getElementById('something')).css({background: '#f00'});
Run Code Online (Sandbox Code Playgroud)
这会很有帮助。我的意思是,JavaScript用对象包装对象jQuery,然后使用jQuery它们的方法。
更新:我通过下一个构建解决了这个问题:
[].forEach.call(document.getElementById('something').querySelectorAll('.test'), function (el) {
el.style.backgroundColor = '#f00';
});
Run Code Online (Sandbox Code Playgroud)
但它仍然不起作用IE8。