Javascript 在使用Ajax更新某些部分时,使用jquery重新分析html页面/其中的一部分
因为我不熟悉jQuery,所以在解析从ajax检索的html数据时遇到了问题 我有一个表单,它使用ajax发布表单数据,并通过添加一个div(与表单在同一页面上)来显示该数据,从而将内容检索回该页面 我想对该数据执行一些jQuery/Javascript操作,但由于我没有重新加载页面,jQuery或Javascript无法解析该数据 如何在不加载的情况下强制javascript或jquery重新分析整个页面 这是密码 html 谢谢Javascript 在使用Ajax更新某些部分时,使用jquery重新分析html页面/其中的一部分,javascript,ajax,jquery,Javascript,Ajax,Jquery,因为我不熟悉jQuery,所以在解析从ajax检索的html数据时遇到了问题 我有一个表单,它使用ajax发布表单数据,并通过添加一个div(与表单在同一页面上)来显示该数据,从而将内容检索回该页面 我想对该数据执行一些jQuery/Javascript操作,但由于我没有重新加载页面,jQuery或Javascript无法解析该数据 如何在不加载的情况下强制javascript或jquery重新分析整个页面 这是密码 html 谢谢 我的问题是如何对从服务器返回的数据执行jQuery操作 如果要
我的问题是如何对从服务器返回的数据执行jQuery操作 如果要在将HTML添加到页面之前对其执行某些操作,可以执行以下操作:
var fragment = $(data);
这将把HTML解析为元素,并为这些元素提供jQuery包装,而无需将它们添加到页面的任何位置。然后,您可以使用jQuery操作这些操作。当然,最终,如果希望它们出现在页面上,则必须将它们添加到页面的某个位置(通过现有元素上的html
或append
或类似方式)
数据有一些a链接,我想解析这些链接,点击它们执行一些操作
你可以做到。例如:|
HTML片段:
<div>
<a href="http://stackoverflow.com">Stack Overflow</a>
<a href="http://w3schools.com" class="remove">w3schools</a>
</div>
这里有一个使用它的页面。在本例中,我删除了一个我们不想要的链接,并将click事件挂接到剩下的链接上,然后将它们附加到页面:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Modify HTML Before Appending</title>
</head>
<body>
<script>
$.ajax({
url: "http://jsbin.com/IsixODa/1",
dataType: "html",
success: function(data) {
var fragment = $(data);
// Remove some links we don't want
fragment.find(".remove").remove();
// Hook the others
fragment.find("a").click(function() {
alert("You clicked a link: " + this.href);
return false;
});
// Put them on the page
fragment.appendTo(document.body);
},
error: function() {
$("<p>Ajax call failed</p>").appendTo(document.body);
}
});
</script>
</body>
</html>
在追加之前修改HTML
$.ajax({
url:“http://jsbin.com/IsixODa/1",
数据类型:“html”,
成功:功能(数据){
变量片段=$(数据);
//删除一些我们不想要的链接
fragment.find(“.remove”).remove();
//勾引其他人
fragment.find(“a”)。单击(函数(){
警报(“您单击了一个链接:+this.href”);
返回false;
});
//把它们放在书页上
fragment.appendTo(document.body);
},
错误:函数(){
$(“Ajax调用失败””).appendTo(document.body);
}
});
@AwladLiton,code addeda假设ajax调用成功,服务器甚至会返回模糊有效的HTML,这应该可以工作。(调用$('.search data').empty();
完全没有必要。此外,如果search data
类中有多个元素,它会将HTML添加到所有元素中。)如果ajax调用失败,该代码将失败,因为错误处理程序试图获取符号的值(数据
)这在任何地方都没有定义。我的问题是如何对从服务器返回的数据执行jQuery操作。您希望对该数据执行什么类型的操作?您现在有了数据,请选择要添加或替换数据的元素,然后将数据添加或替换到此元素中。我添加了var fragment=$(数据);但我在加上这个之后就错了。。(未捕获错误:语法错误,无法识别的表达式:)@AbhishekGoel:这告诉您,data
中的文本看起来不像HTML,因此jQuery试图将其解释为CSS选择器。这就是你需要解决的问题。确保数据
以开始找到错误,我的数据中有空行,即我在另一页上尝试使用hii,但由于hii上方的空行,它仍然给出错误,并且在我删除这些空行后,它就工作了。再次感谢。:)
<div>
<a href="http://stackoverflow.com">Stack Overflow</a>
<a href="http://w3schools.com" class="remove">w3schools</a>
</div>
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Modify HTML Before Appending</title>
</head>
<body>
<script>
$.ajax({
url: "http://jsbin.com/IsixODa/1",
dataType: "html",
success: function(data) {
var fragment = $(data);
// Remove some links we don't want
fragment.find(".remove").remove();
// Hook the others
fragment.find("a").click(function() {
alert("You clicked a link: " + this.href);
return false;
});
// Put them on the page
fragment.appendTo(document.body);
},
error: function() {
$("<p>Ajax call failed</p>").appendTo(document.body);
}
});
</script>
</body>
</html>