所以我的jQuery加载了一个包含一些Mako代码的页面,这些代码加载了Python吐出的内容。
我的问题是我需要将Mako代码生成的文本捕获到jQuery变量中,但是在页面完全加载之前,jQuery中不会捕获任何内容。
你如何在jQuery中编写代码或等到页面完全加载?我尝试使用$('#inbox_conversation').html()
内的$(document).ready(function () {
,但它只返回undefined
。
Mako模板代码
<p id="inbox_conversation">
%if inbox_details.body:
${inbox_details.body}
%endif
</p>
jQuery:在主类
var navigateToInboxDetails = function(messageID) {
WHOAT.networking.redirectToURL("#!"+inboxDetailsURL(messageID));
};
var combined_message = $('#inbox_conversation').html();
alert('combined_message = '+combined_message);
// ^ Returns nothing because it runs before HTML is loaded
jQuery:在网络课程中
//redirect to another page... as the name suggests
var redirectToURL = function (url) {
window.location = url;
};
Ajax流程:
jQuery:in Main Class 和 jQuery:in Networking Class 部分中的代码在此ajax之后被激活
在我的wireInbox功能中:
var loadInbox = function() {
loadResource(inboxURL(), null, function() {
wireInbox();
wireTableHighlighting();
});
};
loadResource函数
var loadResource = function(url, params, callback) {
WHOAT.networking.getToServerWithAjax(url, params, function (response) {
//var $content = $($.parseHTML(response.trim()));
var $content = $($.parseHTML($.trim(response)));
var $container = $('#dashboard-display');
var $content_to_hide = $container.children();
$.when($content_to_hide.fadeOut('fast')).then(function () {
$content.hide();
$container.append($content);
$content.fadeIn('fast', function(){
$content_to_hide.remove();
if(callback) {
callback();
}
});
});
});
注意:如果我放置$('#inbox_conversation')。html();在一个按钮动作,然后它将提醒我我需要得到的内容。所以我知道问题是我的页面还没有完成呈现问题。
我正在尝试做的是从P标签内部获取文本,然后将其拆分并将其中的一部分放入另一个div中。你会如何做到这一点?
答案 0 :(得分:1)
确保在 之后加载jQuery:
<p id="inbox_conversation">
%if inbox_details.body:
${inbox_details.body}
%endif
</p>
...
<script type='text/javascript' src='PATH_TO_JQUERY'></script>
答案 1 :(得分:1)
在加载页面之前,您无法从页面获取数据。
$(document).ready(function () {
var combined_message = $('#inbox_conversation').html();
alert('combined_message = '+combined_message);
});
您将$('#inbox_conversation').html()
置于$(document).ready(function () { });
内的尝试失败,因为它是异步调用的,即将来的某个时间。所以它不能返回任何有用的东西。您需要等到页面加载然后再操作它。你想要做的就是回到过去。您首先尝试执行alert(value)
,然后才实际加载value
。