当通过jQuery更改选择OPTION时,Safari不会更新SELECT的渲染

前端之家收集整理的这篇文章主要介绍了当通过jQuery更改选择OPTION时,Safari不会更新SELECT的渲染前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用jQuery,我试图更改SELECT元素中的选定选项以匹配另一个输入值:
$('#mySelect')
    .find('option')
        .filter(function() {
            return this.text == $('#selectedRejectReason').val(); 
        }).attr('selected',true)

页面呈现,并且这个JS运行时,我可以看到它在Safari的Web检查器中更新了DOM:

<select>    
    <option value="label">Select Reason</option>
<option value="Wrong Amount" selected="true">Wrong Amount</option>
<option value="Wrong Time">Wrong Time</option>
<option value="Wrong Place">Wrong Place</option>
</select>

页面加载时,默认情况下,没有一个OPTIONS具有SELECTED属性…所以第一个项目正在显示. jQuery触发,DOM被更新,所以它看起来像上面那样,但是在Safari中,它仍然显示页面上的“SELECT REASON”.这在Firefox中工作得很好.

任何想法为什么?似乎像一个Safari的bug.唉,它在iPhone上打破了我们的网站.

在进行一些搜索时,有些人似乎通过从jQuery 1.6升级到1.7来解决这个问题.唉,我目前还没有奢侈品.但如果这是修复,任何人都知道改变了哪些修复?

解决方法

由于jQuery 1.6,您应该使用.prop:
$('#mySelect')
    .find('option')
    .filter(function() {
        return this.text == $('#selectedRejectReason').val(); 
    })
    .prop('selected',true);

看看jQuery docs:http://api.jquery.com/prop/

原文链接:https://www.f2er.com/jquery/180515.html

猜你在找的jQuery相关文章