当使用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' });
任何帮助将不胜感激。
解决方法
使用filter()和find()取决于您检索的HTML页面的结构。例如,如果这是检索的页面:
<!DOCTYPE html> <html> <head> <title>Foo</title> </head> <body> <div id="wrap"> <div id="header"> <h1>Foo</h1> </div> <div id="body"> content </div> </div> <div id="tooltip"> tooltip </div> </body> </html>
如果要选择顶级元素= BODY的直接子元素 – 在此示例中:#wrap或#tooltip – 则必须使用filter()。
如果你想选择其他元素 – 在这个例子中:#header,h1,#body,… – 那么你必须使用find()。
我不知道你的元素是否是BODY的孩子,你可以使用这个“黑客”:
$(“< div>”)。html(data).find(selector);