2015-12-15 30 views
0

我正在開發一個函數來執行一些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 
+0

如果您嘗試將函數賦值給'$ .fn.xpath'而不是'$ .xpath',會發生什麼? – dreyescat

+0

@dreyescat,做了什麼,現在我得到了一個不同的錯誤,而不是:'未捕獲NamespaceError:無法執行'評估''文檔':字符串'// z:行'包含無法解析的名稱空間。' – sigil

+0

@sigil不知道我可以幫你解決這個問題......我不擅長XML和名稱空間,也不太喜歡使用XPath;)。但是也許在你的'document.evaluate'中,你需要指定命名空間。 – dreyescat

回答

1

也許你是因爲你沒有創建一個jQuery插件,但增加的功能,jQuery對象得到這個錯誤。

您需要將函數分配給$.fn,並且它將與其他任何jQuery對象方法一樣可用。

$.fn.xpath = function(exp, ctxt) { 
相關問題