如何从jQuery.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'
});

任何帮助将不胜感激。

解决方法

使用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()获取元素。

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...