使用该jQuery.ajax()方法时,我正努力筛选返回的数据以准确获得所需的数据。我知道这很容易使用.load(),可能还有其他jQuery AJAX方法,但是我需要.ajax()专门使用。
jQuery.ajax()
.load()
.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()vs. 的使用find()取决于您检索的HTML页面的结构。例如,如果这是检索到的页面:
filter()
find()
<!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()。
<body>
#wrap
#tooltip
如果要选择其他元素-在这个例子:#header,<h1>,#body,… -那么你必须使用find()。
#header
<h1>
#body
我不知道您的元素是否是其子元素<body>,您可以使用此“ hack”:
$("<div>").html(data).find( selector );
通过使用此替代方法,您始终可以通过获得元素find()。