jQuery无法设置";精选=&引用;精选;通过attr()打开<;选项>;元素? 1. 2. 3. $('.test').attr('selected','selected');​

jQuery无法设置";精选=&引用;精选;通过attr()打开<;选项>;元素? 1. 2. 3. $('.test').attr('selected','selected');​,jquery,jquery-selectors,Jquery,Jquery Selectors,上面的选择框将选择第三个选项作为默认选项,没有任何问题但是,如果使用Firebug检查元素,则所选的中不存在任何selected=“selected”属性 我知道这不是一个大问题,因为它仍然有效,但我需要selected=“selected”在那里,以便我的其他脚本可以捕获它并执行进一步的处理。有什么解决办法吗 谢谢。它应该是$('.test').attr('selected',true);​ 也 值 它不会显示为selected=“selected”这与预期的效果相同,请检查:所选的属性不对应

上面的选择框将选择第三个选项作为默认选项,没有任何问题但是,如果使用Firebug检查元素,则所选的
中不存在任何
selected=“selected”
属性

我知道这不是一个大问题,因为它仍然有效,但我需要
selected=“selected”
在那里,以便我的其他脚本可以捕获它并执行进一步的处理。有什么解决办法吗

谢谢。

它应该是
$('.test').attr('selected',true);​


它不会显示为
selected=“selected”

这与预期的效果相同,请检查:

所选的
属性不对应于选项的当前选择状态。
selected
属性对应于默认的selectedness,如果在表单上调用了
.reset()
(或单击了
type=“reset”
按钮),则会恢复默认的selectedness。可以使用DOM属性
selected
访问当前的selectedness状态,而属性反映的默认selectedness是在DOM属性
defaultSelected
下访问的

对于
/
上的
value
defaultValue
,以及
上选中的
/
默认选中的
上的
type=“checkbox”
/
“radio”
,情况也是如此

jQuery的
attr()
的名称有误导性,它试图假装属性和属性是相同的,这是有缺陷的。使用
attr()
时,通常访问的是属性,而不是属性。因此,
$(el).attr('selected','selected')
实际上正在执行
el.selected='selected'
。这是因为与任何非空字符串一样,
'selected'
是“truthy”:它被转换为
el.selected=true
。但这在任何时候都不会触及
selected=“selected”
属性

IE通过(a)获取
getAttribute
/
setAttribute
错误,从而访问属性而不是属性(这就是为什么您永远不应该在HTML文档中使用这些方法),以及(b)错误地将当前表单状态映射到HTML属性,从而使这种已经令人困惑的情况更加复杂,因此,属性确实显示在该浏览器中

但是我需要在那里选择


为什么??是否将表单序列化为
innerHTML
?这不包括表单字段值(同样,由于错误,IE中除外),因此不是存储字段值的可用方法。

我认为“selected”属性的值无关紧要(它不必为真,可以是任何值)。只要它存在就足以选择它。@letronje:true,但是我只是遵循标准的jQuery格式
.attr(attributeName,value)
我的观点是$('.test').attr('selected','selected');同样有效~>
$('.test')。attr('selected','selected')
只起作用,因为当您将非空字符串(如
'selected'
指定给布尔属性时,它的行为类似于
true
@bobince thnx,我不知道。谢谢。另一个脚本使用当前选择的选项(来自DOM),如果尚未选择任何内容进行进一步处理,则使用默认选项。在阅读您的响应之后,为了让脚本选择当前选择的选项,我想正确的方法应该是设置DOM属性
selected
,而不是使用
selected=“selected”
?是。虽然也有一些限制条件,一些浏览器在设置默认值时也会设置当前值。啊!好的,事实上我以前没有弄乱过DOM属性。对于上面的示例,我应该使用
$('.test').val(true)
将第三个选项的
所选
DOM属性设置为true?对吗?谢谢。不,
val
访问选项的值,而不是它的可选择性。在这种特定情况下,
value=
属性和
value
DOM属性是相同的!(啊!)您应该使用DOM属性
selected
,设置selectedness,因此
$('.test').attr('selected',true)
(与名称相反,这不是设置属性!)或
$('.test')[0]。selected=true
。或者,通常比使用
元素更实用的方法是直接设置
的值,
$('select').val('3')
<select>
    <option>1</option>
    <option>2</option>
    <option class="test">3</option>
</select>

$('.test').attr('selected', 'selected');​