我正在使用jQuery / ajax处理订阅表单,并且需要显示带有成功函数的结果(根据数据库中是否存在电子邮件,它们会有所不同)。但诀窍是我不需要h2和第一个“p”标签。
如何只显示div#alertmsg和第二个“p”标签?
我尝试使用here描述的方法删除不必要的元素,但它不起作用。
这是我的代码:
var dataString = $('#subscribe').serialize();
$.ajax({
type: "POST",
url: "/templates/willrock/pommo/user/process.php",
data: dataString,
success: function(data){
var result = $(data);
$('#success').append(result);
}
以下是返回的数据:
<h2>Subscription Review</h2>
<p><a href="url" onClick="history.back(); return false;">
<img src="/templates/willrock/pommo/themes/shared/images/icons/back.png" alt="back icon"
class="navimage" /> Back to Subscription Form</a></p>
<div id="alertmsg" class="error">
<ul>
<li>Email address already exists. Duplicates are not allowed.</li>
</ul>
</div>
<p><a href="login.php">Update your records</a></p>
答案 0 :(得分:4)
您可以使用$()
运算符的上下文部分,如下所示:
var dataString = $('#subscribe').serialize();
$.ajax({
type: "POST",
url: "/templates/willrock/pommo/user/process.php",
data: dataString,
success: function(data){
var result = $(data);
$("h2, p:first", result).remove();
$('#success').append(result);
}
});
这将从响应中查找<h2>
和第一个<p>
,并在追加之前删除它们。默认上下文(要查看的元素)是document
,因此当您调用$("h2")
时,实际调用$("h2", document)
(实际上正在调用{ {1}})...你也可以在那里放置一些非默认的东西,在这种情况下,就是响应。