切换jQuery.remove()

时间:2010-09-22 17:24:38

标签: jquery accessibility screen-readers

而不是.show()'ing和.hide()'ing(或.toggle()'),有没有办法“切换”.remove()函数?

我意识到.remove()从字面上删除了DOM中的元素,因此一旦它们消失就很难神奇地替换被删除的元素,但有没有办法伪造它?

注意:必须从DOM中删除它们,以便屏幕阅读器忽略它们(AFAIK屏幕阅读器不尊重.show()和.hide())。

感谢。

---编辑---

好的,所以.detach()可能适合我。如果我的标记是:

<a href="#">Toggle images</a>

<p><span>Some text here</span><img src='image1.png'/><img src='image2.png'/></p>
<p><span>Some more text</span><img src='image2.png'/></p>
<p><span>Even more text</span><img src='image5.png'/><img src='image1.png'/>
  <img src='image5.png'/></p>

通过单击锚点,它将删除所有图像,然后再次单击将恢复。使用.detach()它会如何工作?

---编辑#2 ---

正如thenduks指出的那样,屏幕阅读器实际上尊重display: none;,这会改变我的问题。我最终得到了一个简单的切换代码。谢谢!

2 个答案:

答案 0 :(得分:4)

您可以尝试使用jQuery 1.4最近添加的内容:detach删除它们,然后再重新添加它们。

答案 1 :(得分:1)

您可以将DOM元素保存到变量中,以便稍后再添加回来。

检查示例here