2015-04-06 192 views
1

我想要做的jQuery做这个jQuery的一套属性:没有价值

<option value="test" selected>...</option> 

但一切我试着给我:

<option value="test" selected="selected">...</option> 

我试图.attr("selected", "")以及.attr("selected", true),但他们给出不期望的结果selected="selected"。我怎样才能做到这一点?我在网上找到的所有内容都表明上述格式的前者或后者。

+0

你为什么要关心它? – charlietfl

回答

6

你不应该担心该属性的一切,你应该改变财产

$('option').prop('selected', true); 

您还可以通过仅仅改变选择的值(假设它不是multiple设置所选选项)

$('select').val('test'); 

不要紧,它是什么样子的HTML,它在的事项,既为设置选项,选择并提交它的形式当DOM表示。


仅供参考,<option value="test" selected="selected">是不是不理想的根本,这是完全有效的,你通常会想要什么。

当存在selected属性时,无论属性值如何,该选项都会被选中,即使该属性值为空,该选项也会被选中。

属性应该有值的,所以selected="selected"是罚款,甚至像selected="hello kitty"会选择该选项,不选它,你会删除该属性,但同样,你应该改变财产!

+0

是的,我也试过,但由于某种原因,它似乎没有任何区别。我不明白。为什么'.attr'工作,但不是'.prop'? – Chris

+0

你使用最新的jQuery吗? –

+0

好吧,首先,你在问题中发布的HTML片段都是有效的,通常你会想要后者,这就是为什么你用'attr'得到的结果。其次,如上所述,你应该改变底层属性,而不是属性,但'prop'是在jQuery 1.6中添加的,希望你使用的是比这更新的版本。 – adeneo