使用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/