【发布时间】:2011-05-13 19:31:26
【问题描述】:
当使用jQuery.ajax() 方法时,我正在努力过滤返回的数据以获得我需要的数据。我知道使用.load() 和其他jQuery AJAX 方法很容易,但我需要特别使用.ajax()。
例如,我知道这是可行的;
var title = $(data).filter('title'); // Returns the page title
但是如果我只想要一个 id="foo" 的 div 的内容呢?
var foo = $(data).filter('#foo'); // None of these work
var foo = $(data).find('#foo'); //
var foo = $('#foo', data); //
理想情况下,我想要一种方法,我可以向其中传递一个普通的 jQuery 选择器,该方法适用于选择标题、div 或 jQuery 可以选择的任何其他元素。这样我就可以将任何字符串传递给我自己的 ajax 函数 - 例如;
myApp.ajax({
url: 'myPage.html',
filterTitle: 'title',
filterContent: '#main-content'
});
任何帮助将不胜感激。
【问题讨论】:
-
$(data).find('#foo');或$(data).filter('#foo');必须工作。不可能这两个都不起作用。您确定检索到的页面上有 #foo 元素吗? -
他们似乎都返回了一个空对象。当使用 Chrome 观察变量 foo 时,它显示为 Object[0] 并展开它会显示上下文:未定义和长度:0。对于“查找”和“过滤”也是如此。记录 foo.html() 返回 null。
-
那个对象根本不是空的。请参阅我的答案以获取工作示例。
-
抱歉,是的,我确定页面中有相关元素。它实际上是“.ops_datagrid”,但我敢肯定。在 Object[0] 下还有一个名为 prevObject 的属性。它是一个包含“Comment”、“Text”、“HTMLMetaElement”、“Text”、“HTMLTitleElement”、“Text”、“HTMLDivElement”、“Text”、“HTMLParagraphElement”等的数组......
-
第一个 div 元素有一个属性 textContent '.ops_datagrid'