问题在于:
我正在循环一组节点并根据它们的类型我想使用jQuery xslt插件。
var options = {
type: "POST",
url: "api/dosomething/usefull",
data: "orderid=12345",
success: function(response) {
$(response).find("group").each(function() {
if ($(this).attr(type) == "X") {
$.xslt({xml: $(this), xslUrl: 'xsl/order/x_group.xsl', xslCache: false, callback: function(data){
//do something usefull with the transformed data
}});
} else {
$.xslt({xml: $(this), xslUrl: 'xsl/order/other_group.xsl', xslCache: false, callback: function(data){
//do else with the transformed data
}});
}
})
}
};
问题是xslt插件需要一个javascript文档对象。如何将每个函数的结果转换回文档? $(this).text()将删除所有内部xml标记。 $(this).html()也不会工作,因为jQuery下的XML不支持。明确地将其用作参数(ofcourse)会触发错误。
替代方案:
答案 0 :(得分:0)
您可以使用$(this).get(0)将$(this)转换回原生DOM吗?
然后至少你会传入本机元素然后传递jQuery Collection。
答案 1 :(得分:0)
更多谷歌搜索解决了这个问题:
var xmldoc = ((new XMLSerializer()).serializeToString(this));
我现在可以使用xmldoc作为xslt引擎的参数:)