如何在文本选择中获取所有<img/>标记?

时间:2010-05-08 08:13:51

标签: javascript jquery dom

我已经看了一会儿,但似乎没有一种简单的方法可以做到这一点。 jQuery至少没有帮助,它似乎完全缺乏对选择或DOM范围的任何支持。我希望像$.selection.filter('img')一样简单的东西似乎只能处理数十行代码,这些代码涉及手动枚举范围和browser implementation inconsistencies中的元素(尽管ierange有帮助)。还有其他快捷方式吗?

3 个答案:

答案 0 :(得分:2)

var fragment = getSelection().getRangeAt(0).extractContents();

选择中的节点将被移除并在DocumentFragment中返回,您现在可以像访问任何元素一样访问childNodes fragment

答案 1 :(得分:1)

  

似乎完全缺乏对选择或DOM范围的任何支持

是的,原因是IE缺乏对选择和DOM Range的支持。你可以在IE的非标准'TextRange'对象之上构建一个抽象层,但是由于TextRanges暴露的界面非常糟糕,它很难,既慢又复杂,它本身就是一个完整的库。见例如。 this one

答案 2 :(得分:1)

$("img", window.getSelection().getRangeAt(0).extractContents());

不幸的是,你必须使用前面提到的IERange库来支持IE 6/7/8。

值得注意的是:DOM Range will be implemented in IE9并且有talks of new selection APIs in HTML5