这个jQuery代码有什么问题?
问题描述:
我的下面的代码工作正常。这个jQuery代码有什么问题?
$(document).ready(function() {
$('a.address').click(function() {
$('#box').slideDown("slow");
$.ajax({
type: "POST",
url: "details.php",
success: function(html){
$("#msg").html(html);
}
});
});
});
但以下情况不(仅1线成功:)内改变,它加载什么..只有slidesdown的#box和#msg内,但不加载#address。
$(document).ready(function() {
$('a.address').click(function() {
$('#box').slideDown("slow");
$.ajax({
type: "POST",
url: "details.php",
success: function(html){
$("#msg").html($(html).find('#address').html());
}
});
});
});
The details.php is:
<div id="info">some text.</div>
<div id="address">The address</div>
答
当你写$(html)
,你要创建它拥有两个<div>
元素一个jQuery对象。
关于此对象的调用.find(...)
搜索<div>
元素的后代。
既然这两个元素都没有任何子元素,我将永远找不到任何东西。
取而代之,您可以调用.filter()
来搜索集合中的元素(但不是它们的后代)。
或者,您可以将返回的HTML包装在新的<div>
标记中,然后致电.find()
。由于您的元素将是包装<div>
的子元件,因此可通过.find()
找到它们。
与.filter()
不同,如果将服务器更改为返回您正在寻找的孩子的<div>
,则此功能仍然有效。
答
jQueryshelp方法可加载&插入页面片段:
$('a.address').click(function() {
$('#box').slideDown("slow");
$('#msg').load('details.php #address');
});
这可能是你想要在这里实现什么。
+1 jQuery很迷人 – TheVillageIdiot 2011-01-28 17:20:57