首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >outerHTML和属性更新

outerHTML和属性更新
EN

Stack Overflow用户
提问于 2014-01-11 14:49:52
回答 4查看 1.6K关注 0票数 4

我试图将HTML代码作为带有属性更新的字符串。

我有一个select标记,我使用JavaScript更新它的选项。

默认情况下,第一个option是使用selected="selected"属性的selected

如果我将selected从使用option1.selected = false的第一个选项中取消,并为第二个option设置option2.selected = true,然后调用selectouterHTML,则得到

代码语言:javascript
复制
<select>
    <option selected="selected">one</option>
    <option>two</option>
    <option>three</option>
  </select>

如您所见,selected属性仍然位于第一个option上,而它已被移动到第二个option上。预期结果是

代码语言:javascript
复制
<select>
    <option>one</option>
    <option selected="selected">two</option>
    <option>three</option>
  </select>

下面是一个示例http://jsbin.com/adAbAMe/2/edit?html,js,console,output (单击run with js以获得结果),它显示,如果selected属性已被更改,则不会更改selected代码。

但是,我需要从outerHTML获得最终的HTML和成功的属性更新,因为如果我将这个select移到某个地方,在使用JavaScript之前我就不会得到任何更新。

是否有任何方法将HTML作为带有实际属性值的字符串?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-11 14:54:45

selected属性不会自动更新,但可以将其设置为被删除并添加到适当的元素中。

代码语言:javascript
复制
//remove "selected" from first
if (i==0) {
  option.selected = false;
  option.removeAttribute("selected");
}

//add "selected" to second
if (i==1) {
  option.selected = true;
  option.setAttribute("selected", "selected");
}

这是一把有用的小提琴

票数 3
EN

Stack Overflow用户

发布于 2014-01-11 14:54:24

您可以使用

代码语言:javascript
复制
option.setAttribute('selected', 'selected');

代码语言:javascript
复制
option.removeAttribute('selected');
票数 0
EN

Stack Overflow用户

发布于 2014-01-11 14:55:59

试一试

代码语言:javascript
复制
$('button').click(function () {
    console.log($('select').prop('outerHTML'))
})

$('select').change(function(){
    $(this).find('option[selected]').removeAttr('selected');
    $(this).find('option:selected').attr('selected', 'selected');
})

演示:小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21063656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档