通过jQuery删除选定属性后刷新多选
Refresh Multiselect after removing selected attribute via jQuery
使用.removeAttr("selected")从多选中的选项中删除"selected"属性时,Chrome中的选项不会立即重绘为未选中。使用Chrome Developer Tools监控DOM显示所选属性已从DOM中删除,但在页面上的另一个项目获得焦点之前,选项似乎仍处于选中状态。
有没有一种方法可以通过编程重新绘制选项?我已经触发了"更改"和其他一些事件,但除了让用户悬停或单击适当的位置之外,似乎什么都不起作用。浏览器似乎忘记了重新绘制元素,直到其他东西引起了它的注意。
这是相关代码:
$("#selectAll").click(function () {
$("#x option").attr("selected", "selected");
});
$("#deselectAll").click(function () {
$("#x option").removeAttr("selected");
});
和标记:
<a id="selectAll" href="javascript:void(0)">Select All</a>
<a id="deselectAll" href="javascript:void(0)">Deselect All</a>
<select multiple="multiple" size="5" style="height: 6em;" name="x" id="x">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
这是在jQuery 1.7.1和Chrome 16中。
在其上设置focus
并立即调用blur
即可工作。试试这个。
$("#selectAll").click(function () {
$("#x option").attr("selected", "selected");
});
$("#deselectAll").click(function () {
$("#x").find("option")
.removeAttr("selected")
.end().focus().blur();
});
演示
尝试刷新元素的宽度,如下所示:
$("#selectAll").click(function () {
$("#x option").attr("selected", "selected");
});
$("#deselectAll").click(function () {
$("#x option").removeAttr("selected").width($("#x option").width());
});
jsFiddle
相关文章:
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 使用Ajax刷新页面属性
- AngularJS刷新对象中的属性
- Kml层在刷新后工作正常,但给定typeError:无法读取属性getMap.第一次加载时
- 数据属性刷新画布
- 删除属性后刷新DOM,而不象chrome那样刷新页面
- 如果我滚动并刷新我的网页,我的导航标题会失去其属性.JQuery
- 为什么 jquery 在我刷新时显示“禁用”属性存在
- AngularJS - 如何及时刷新控制器属性
- 刷新 Angular 中自定义属性指令的元素
- <对象> 代码在 Chrome 中更改其数据属性时不会刷新
- 检测视图模型属性是否在不刷新的情况下发生更改
- 如何禁用浏览器的自动刷新属性
- 输入CSS属性并在刷新后更改,仍然无法修复
- CSS by data属性不会刷新/重新绘制
- 切换时刷新css'已禁用'属性
- 在刷新页面之前不会设置会话属性
- 通过jQuery删除选定属性后刷新多选
- 刷新映射时出现未定义的属性错误
- 即使在使用localStorage刷新页面之后,也可以检索禁用的属性