小编典典

如何过滤jQuery.ajax()返回的数据?

ajax

使用该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'
});

任何帮助将不胜感激。


阅读 266

收藏
2020-07-26

共1个答案

小编典典

filter()vs. 的使用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>,您可以使用此“ hack”:

$("<div>").html(data).find( selector );

通过使用此替代方法,您始终可以通过获得元素find()

2020-07-26