附加到$()的jQuery方法

时间:2018-04-18 06:46:32

标签: jquery

我必须显示两个数据集的内容。一个是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()函数实际上并未附加到原始数据集。所以:

  • 如何调用包装在$()?
  • 中的对象的成员方法
  • 如何将方法附加到$()并将执行重定向到包装对象的相应方法?

0 个答案:

没有答案