当我尝试调用插件时,“对象不支持属性或方法”

时间:2015-12-15 21:56:52

标签: javascript jquery xml xpath

我正在开发一个函数来进行一些XML处理。我正在尝试添加一个允许我从jQuery对象执行XPath查询的插件。

function GetVersionCollection_FromLiveHistory(itemid)
{
    (function($) {
        $.xpath = function(exp, ctxt) {
            var item, coll = [],
                result = document.evaluate(exp, ctxt || document, null, 5, null);

            while (item = result.iterateNext())
                coll.push(item);

            return $(coll);
        }
    })(jQuery);

    url = "https://someSite.com/sites/xyz/_vti_bin/owssvr.dll?Cmd=Display&XMLDATA=TRUE&List={LISTGUID}&View={VIEWGUID}&IncludeVersions=TRUE&FilterField1=ID&FilterValue1=" + itemid
    returnedXml = null;
    var output=$.get(url,function(returnedXml){
        elVersions=$.parseXML(returnedXml);
        var result={};
        $(elVersions).xpath("//z:row").each(function(index,element){
            versionNumber=$(this).attr('ows__UIVersionString');
            result[versionNumber]=$(this);
            return result;
        });
    },"xml");
    return output;
}

当我调用它时,浏览器会返回一个错误,该错误似乎表明xpath尚未成功添加为jQuery插件,当它到达$(elVersions).xpath("//z:row")...行时。

IE:

Object doesn't support property or method 'xpath'

铬:

Uncaught TypeError: $(...).xpath is not a function

1 个答案:

答案 0 :(得分:1)

您可能会收到此错误,因为您没有创建jQuery插件,而是向jQuery对象添加了一个函数。

您需要将函数分配给$.fn,它将像任何其他jQuery对象方法一样可用。

$.fn.xpath = function(exp, ctxt) {