jquery从ajax输出中查找div的ID
问题描述:
恐怕很类似的问题已经被问到here,但由于某种原因它只输出“null”。jquery从ajax输出中查找div的ID
我想从ID输出的ajax输出中找到div html。以下是我的脚本。
// LOAD NAVIGATION
$.ajax({
type: 'POST',
url: 'includes/content/bookingsystem/b_navigation.php',
data: thisButtonType + '=true&loadNav=date',
success: function(output) {
alert(output); // Outputs correctly two divs #navDay, and #navMonth
alert($(output).find('#navDay').html()); // Results into "null"
$('#navDay').html($(output).find('#navDay').html()); // Results in an empty div, since it overwrote the html with 'null' - nothing.
//$('#navDay').replaceWith($('#navDay', output)); // Same here - nada.
//$('#navMonth').html($(output).find('#navMonth').html());
}
});
第一个警报(输出)的结果是:
<div id="navDay">Im day nav!</div>
<div id="navMonth">Im month nav!</div>
答
,如果你希望能够使用.find()
或$(selector, context)
你需要用你的两个div在外层div - 这些功能只能找到后代节点,并且在没有真正的父项的情况下,您的HTML中有两个兄弟节点。
你可以做包装服务器端,或使用.wrap()
。
此外,.html()
函数只返回标签的内容,而不是标签本身。
假设(根据您所使用的.replaceWith
),你的目的是要取代整个元素,而不仅仅是文字,我会去:
<div>
<div id="navDay">Im day nav!</div>
<div id="navMonth">Im month nav!</div>
</div>
在这一点这条线从以前的非工作代码也可以工作:
$('#navDay').replaceWith($('#navDay', output));
答
试试这个
// LOAD NAVIGATION
$.ajax({
type: 'POST',
url: 'includes/content/bookingsystem/b_navigation.php',
data: thisButtonType + '=true&loadNav=date',
success: function(output) {
//alert(output); // Outputs correctly two divs #navDay, and #navMonth
//alert($(output).find('#navDay').html()); // Results into "null"
$('#navDay').html($('#navDay', $(output).wrap("<div />")).html()); // Results in an empty div, since it overwrote the html with 'null' - nothing.
//$('#navDay').replaceWith($('#navDay', output)); // Same here - nada.
//$('#navMonth').html($(output).find('#navMonth').html());
}
});
最好的,谢谢你一大堆。没有意识到它必须像那样包裹。 – Dusty
我无法像@Alnitak建议的那样在'output'上找到正确执行'.wrap()'的方法。我尝试'.wrap()'以便我可以做'.find()',但是我没有得到任何地方。创伤和不同的路线,只是使用'.filter()'建议在http://stackoverflow.com/a/400232/923817 –