在documentFragment附加节点上使用jquery的find方法

时间:2009-06-12 16:22:53

标签: jquery

我正在编写一个将ajax xml响应转换为的应用程序 使用客户端xslt转换的html。转型是 使用以下代码段实现,效果很好 -

    transform:function(xml){
            if (window.XSLTProcessor){
                    var xsltProcessor = new XSLTProcessor();
                    xsltProcessor.importStylesheet(Xmer.xsldoc);
                    var outputXHTML = xsltProcessor.transformToFragment(Xmer.makeXml(xml), document);
                    document.getElementById('tree').appendChild(outputXHTML.cloneNode(true));
            }
            else if(window.ActiveXObject){  //Internet Explorer
                    var d=Xmer.makeXml(xml);
                    var outputXHTML = (d).transformNode(Xmer.xsldoc);
                    document.getElementById('tree').innerHTML=outputXHTML;
            }
    }

但是当我尝试处理插入时,在FF中遇到问题 标签使用jquery的find方法。我试图获取所有的div 具有由上述代码插入的特定类名;运用 以下 -

    var d=$document.find('div.pointer');
    alert ($('div.pointer').length);
    alert (d.length);

但上述警报始终返回“0”长度。相同的代码有效 在IE中很好。我正在使用jquery 1.3.2。

为了添加更多内容,我对documentFragments和。做了一些研究 发现 关注http://ejohn.org/blog/dom-documentfragments/#comment-319149 (需要点击“显示评论”才能到达这个地方) -

“#显而易见,但有时被忽视:片段是自包含的。 这意味着,片段无法访问其外部的对象 (即主要文件的一部分)。因此,即使你有CSS类 (类属性)在元素中设置,不可能基于查询 在由该CSS类设置和/或修改的属性上。基本上是 class属性中设置的类,如果在片段外定义, 变成简单的标签。“

所以这意味着不支持在片段内搜索元素。

有没有可用的工作?

如果前面已经讨论过这些问题,我道歉 如果有人指导我,我将不胜感激。

谢谢, amit

1 个答案:

答案 0 :(得分:2)

这是一个允许搜索片段的sizzle(jquery的搜索库)补丁:

http://github.com/spocke/sizzle/commit/bc6ff34737ff57da18497bef301bbbaffdfb9b7e