选项:选择不工作jquery 1.9
下列:
$("select option:contains(fish)").attr('selected', true);
在jQuery 1.9以下的任何地方都可以使用,但在jQuery 1.9+中根本不起作用。 我一直在搜索有关任何变化的任何文档,但没有找到任何内容。
知道如何让这个代码与新的jquery一起工作吗?
示例此处(默认为jQuery 1.4): http : //jsfiddle.net/reigel/TZmEw/
对于jquery 1.9,使用Prop api而不是attr。
$("select option:contains(fish)").prop('selected', 'selected');
要么
$("select option:contains(fish)").prop('selected', true);
原因:jQuery 1.6引入了.prop()方法来设置或获取节点上的属性,并且不推荐使用.attr()来设置属性。 但是,高达1.9的版本继续支持在特定情况下使用.attr()。 当使用区分属性和属性的选择器时,向后兼容性名称中的此行为会导致混淆。
资料来源: http : //jquery.com/upgrade-guide/1.9/#changes-of-note-in-jquery-1-9
在Attr Api中提到: 从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。 此外,.attr()不应用于普通对象,数组,窗口或文档。 要检索和更改DOM属性,请使用.prop()方法。
资料来源: http : //api.jquery.com/attr/#entry-longdesc
$("select option:contains(fish)").attr('selected', 'selected');
有关 1.9 的主题 ,请参阅jQuery文档 。 .attr
vs. .prop
可能令人困惑,因为我知道没有具体方法可以知道“属性”是什么。 对于所有意图和目的,当更改用户能够更改的值时…尤其是布尔值,您应该使用.prop
一个例外是输入值 – 你应该使用.val
。 同样,使用.val
设置元素值可能更好 – 在你的情况下不容易做,但它会更准确。
jQuery 1.6引入了.prop()方法来设置或获取节点上的属性,并且不推荐使用.attr()来设置属性。 但是,高达1.9的版本继续支持在特定情况下使用.attr()。
试试这个
$("select option").removeAttr('selected').filter(":contains(fish)").attr('selected', true);
从jQuery 1.6
,你应该使用prop
:
$("select option:contains(fish)").prop('selected', true);
在jQuery 1.6.1
,他们将此function重新引入到attr
方法中,以实现向后兼容性(人们抱怨)。 在1.9
他们再次将其删除 ,因为此function已被弃用了足够长的时间。