jQuery无法设置";精选=&引用;精选;通过attr()打开<;选项>;元素? 1. 2. 3. $('.test').attr('selected','selected');
上面的选择框将选择第三个选项作为默认选项,没有任何问题但是,如果使用Firebug检查元素,则所选的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”这与预期的效果相同,请检查:所选的属性不对应
中不存在任何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');