简短版本:
使用 AJAX 调用将带有选项的 select 元素插入 DOM 后,JavaScript 无法识别我的选项上的“selected”属性。就好像它不存在一样,尽管在 Firebug 中查看它,我可以看到它是存在的。
长版:
我正在使用一个 jQuery 插件,它基于实际的 html 选择生成一个“多重选择”(几乎带有复选框的选择模仿),其中的选项可以具有“selected”属性。该插件通过执行以下操作来检查所选属性是否存在
$(this).attr('selected') == true
如果存在,则将相应的复选框设置为选中。当我正常加载页面时,这一切都有效。如果用户选择过滤数据,我还需要重新加载数据,这就是问题所在。新数据是通过 AJAX 获取的,插件会重新应用于新标记,但“选定”属性不被视为存在即使它像以前一样存在。其他属性工作正常,但“选择”却很奇怪。这是有效和无效时的标记。
<option value="1" selected="selected" warning="true"> text</option>
我真的很摸不着头脑。有人有建议吗?
最佳答案
忘记 jQuery 令人困惑的命名 attr()
方法和属性,而只需使用选项的 selected
属性,该属性是一个 bool 值,适用于所有主要的1996 年以来发布的浏览器:
// Assuming the select list is stored in a variable called select
alert( select.options[0].selected );
如果您必须使用 jQuery 来获取该选项,则等效内容如下:
alert( $(this)[0].selected );
属性几乎从来都不是您想要的,因为它们在 IE 中的实现不正确,并且仅代表元素某些方面的初始值,而不是当前值。 jQuery 的 attr()
方法通常在内部使用属性。
关于javascript - 为什么 javascript 在我的选择选项上看不到 "selected"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334393/