当前位置 : 主页 > 网页制作 > JQuery >

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

来源:互联网 收集:自由互联 发布时间:2021-06-15
当使用jQuery.ajax()方法时,我正在努力过滤返回的数据以获得我所需要的.我知道这很容易使用.load()和其他jQuery AJAX方法,但我需要特别使用.ajax(). 例如,我知道这有效; var title = $(data).filter
当使用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);

通过使用此解决方法,您始终可以通过find()获取元素.

网友评论