javascript - 为什么 javascript 在我的选择选项上看不到 "selected"属性?

标签 javascript html

简短版本:

使用 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/

相关文章:

javascript - JS 使用不同的填充

javascript - js中如何向textarea添加文本

javascript - Paper JS 的编程点击事件

javascript - jquery replaceWith 中 Chrome 中未捕获的语法错误意外标记

javascript - "Scroll"长文本输入的最右边

javascript - Youtube API V3 使用 PHP 获取横幅图像(未定义索引)

javascript - 联系表单电子邮件集成 Javascript HTML

javascript - 如何使 Canvas 达到主体的宽度和高度,同时不拉伸(stretch)或模糊绘图?

html - CSS Tooltip 在不同的浏览器中有不同的位置。我该如何解释呢?

python - 使用带有 GAE 和 Jinja2 的 WTForms,当字段无效时如何获得红色边框?