获取字符串中的内容
我要执行以下操作。
$("a").click(function (event) { event.preventDefault();
$.get($(this).attr("href"), function(data) {
$("html").html(data);
});
});
我想要所有超链接的行为进行ajax调用并检索html。
不幸的是,您不能简单地用ajax响应中收到的html替换当前的html。
如何仅获取<body> </body>
ajax响应的标记中的内容,以便 替换现有html中正文的内容。
编辑:<body>
开始标记并不总是这样<body>
,有时可能会有一个类,例如
<body class="class1 class2">
回答:
如果我对您的理解正确,请使用正则表达式在body标签之间获取内容。
$.get($(this).attr("href"), function(data) { var body=data.replace(/^.*?<body>(.*?)<\/body>.*?$/s,"$1");
$("body").html(body);
});
编辑
根据您在下面的评论,这是一个更新,以匹配任何body标签,无论其属性如何:
$.get($(this).attr("href"), function(data) { var body=data.replace(/^.*?<body[^>]*>(.*?)<\/body>.*?$/i,"$1");
$("body").html(body);
});
正则表达式为:
^ match starting at beginning of string.*? ignore zero or more characters (non-greedy)
<body[^>]*> match literal '<body'
followed by zero or more chars other than '>'
followed by literal '>'
( start capture
.*? zero or more characters (non-greedy)
) end capture
<\/body> match literal '</body>'
.*? ignore zero or more characters (non-greedy)
$ to end of string
添加“ i”开关以匹配大写和小写字母。
并且请忽略我对’s’开关的评论,在JavaScript中,默认情况下所有RegExp都已经是单行,要匹配多行模式,请添加’m’。(该死的Perl,在我写JavaScript时干扰了我!:-)
以上是 获取字符串中的内容 的全部内容, 来源链接: utcz.com/qa/410847.html