我有一个div,在jquery的文档准备中我使用$("#div id").append('html text')
语法附加 - 使用10个左右的div子元素。
完成此操作后,我尝试通过alert($(".classname"));
检查子div的内容,然后返回:
function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)}
我原本希望它能提醒子div的html内容而不是javascript?
完整的脚本:
<script type="text/javascript">
$(document).ready(function(){
// twitter api's base url
var url="http://search.twitter.com/search.json?callback=?&result_type=recent&q=";
// we'll store the search term here
var query = "blah";
// get the json file
$.getJSON(url+query,function(json){
// this is where we can loop through the results in the json object
$.each(json.results,function(i,tweet){
// this is where we do what we want with each tweet
$("#results").append('<div class="tweetBox"><span class="unseen">'+tweet.created_at+'</span><div class="tweetImg"><img src="'+tweet.profile_image_url+'" width="48" height="48" /><a class="overbox" href="http://twitter.com/'+tweet.from_user+'/status/'+tweet.id+'"></a></div>'+tweet.text+' ...said '+((new Date().getTime()/1000/60)-(new Date(tweet.created_at))/1000/60).toFixed(0)+' minutes ago</div>');
});
});
$("#results").height(function(){return $(window).height()-204;});
alert($(".unseen").html());
});
</script>
<div id="results"></div>
更新:
肯定是某种jquery / javascript竞争条件在这里,如果我用setTimeout(function(){alert($(".unseen").html());},1000);
替换警报它返回预期的文本。如果我将超时暂停更改为1毫秒,则会再次返回null
。
除了坚持延迟之外,还不确定这个“真实”的解决方法吗?
答案 0 :(得分:1)
Ajax调用(如$.getJSON
)是异步完成的。
这意味着当完成jQuery选择时(在脚本的底部),可能还没有收到响应(仍然在路上)。
您必须移动所有依赖于回调函数中响应创建的元素的代码(在$.each(...);
之后)
例如:
$.getJSON(url+query,function(json){
// this is where we can loop through the results in the json object
$.each(json.results,function(i,tweet){
// this is where we do what we want with each tweet
$("#results").append('<p>this element is created only when the callback is triggered</p>');
});
// do stuff here with all your created elements
alert('found '+$(".unseen").length+' objects');
});
另请注意,html()函数仅返回集合中第一个元素的html内容。
编辑:您的超时技巧有效,因为它为完成所需的时间提供了ajax调用,并触发了将对象广告到DOM的回调函数。
参见工作示例here。
答案 1 :(得分:0)
尝试
alert($('.classname').html());
我不明白为什么它会返回功能文字;你确定在$('.classname')
电话中只有alert()
吗?也许你有$('.classname').html
没有最终()
?