我必须显示两个数据集的内容。一个是xml,另一个是放在一个结构/对象数组中。我想以同样的方式处理它们。我做了:
{
if( FileType == FILE_TYPE_XML )
{
$( XmlLogData ).find( "LogRecord" ).each( function()
{
$.fn.ProcessLogTree_( $( this ) );
});
}
if( FileType == FILE_TYPE_JSN )
{
$( SerialLogData ).each( function()
{
LogElemTemp = this; // naive way
LogElemTempWrap = $( LogElemTemp ); // naive way
LogElemTempWrap.text = function() { return LogElemTemp.text(); }; // naive way
LogElemTempWrap.parent = function() { return $( LogElemTemp.Parent() ); }; // naive way
$.fn.ProcessLogTree_( $(this) );
//$.fn.ProcessLogTree_( LogElemTempWrap ); // naive way
});
}
}
$.fn.ProcessLogTree_ = function( LogElemWrap )
{
if( FileType == FILE_TYPE_JSN ) LogElemWrapUp = ???;
if( FileType == FILE_TYPE_XML ) LogElemWrapUp = LogElemWrap.parent();
NewLine = LogElemWrap.text();
...
我从我找到的一个例子中获取了xml处理部分并且工作正常。问题是,在xml的情况下,parent()和text()似乎附加到$(this),如ProcessLogTree_()中所示?怎么做的?! 如果是会员数据我可以写
var x = LogElemWrap.attr( "Desc" );
对于两个数据集(xml和另一个),但对成员方法不起作用。我甚至都不知道,如何调用$()中包含的方法?我试过了
(LogElemWrap.attr( "text" ))()()
但不起作用,实际上并不是我想要的,因为我希望ProcessLogTree_没有任何数据集类型依赖。无论如何,我想知道该怎么做。
正如我所示,我天真的方式是在调用ProcessLogTree_()之前附加一些包装器。这适用于像text()这样的函数,但是在parent()的情况下,问题是几乎可以工作,当然,父级也没有父()方法(所以我可以从父级到parent)因为parent()函数实际上并未附加到原始数据集。所以: