Javascript 无法访问附加数据的属性
我有个问题。这段代码在html是静态的并且没有附加的情况下工作,但是当附加数据时它不会 我添加了JSON文档中的数据,如下所示:Javascript 无法访问附加数据的属性,javascript,jquery,json,append,Javascript,Jquery,Json,Append,我有个问题。这段代码在html是静态的并且没有附加的情况下工作,但是当附加数据时它不会 我添加了JSON文档中的数据,如下所示: $('#articles').append('<article><time pubdate="pubdate">' + pubDate + '</time><h2><a href="#">' + headline + '</a></h2><p>' + bodyText +
$('#articles').append('<article><time pubdate="pubdate">' + pubDate + '</time><h2><a href="#">' + headline + '</a></h2><p>' + bodyText + '</p></article>');
然后我想访问currentElement.position():
但它回来时还没有定义。。。它能处理未处理的数据吗?我做错了什么
谢谢你的帮助
编辑:以下是完整的代码:
$(document).ready(onDocumentReady);
function onDocumentReady()
{
console.log('Document ready');
$.ajax({
type:'GET',
url:'data.json',
dataType:'json',
success: jsonParser
});
function jsonParser(json)
{
$.getJSON('data.json',runData)
function runData(data)
{
$.each(data.article, writeData)
function writeData(keys,values)
{
var pubDate = values.pubDate;
var headline = values.headline;
var bodyText = values.bodyText;
$('#articles').append('<article><time pubdate="pubdate">' + pubDate + '</time><h2><a href="#">' + headline + '</a></h2><p>' + bodyText + '</p></article>');
}
}
}
var currentElement = $("article:first");
console.log(currentElement.position());
我得到:
[prevObject:x.fn.x.init[1],上下文:文档,选择器:“文章:第一”,jquery:“1.10.2”,构造函数:函数…]
上下文:文档
长度:0
prevObject:x.fn.x.init[1]
选择器:“第一条”
原型:对象[0]
我真的不懂那些东西,但我觉得这可能会有帮助
更新:
如果我这样设置超时,我就能够访问元素:
setTimeout(function()
{
var currentElement = $("article:first");
console.log(currentElement);
console.log(currentElement.position().left);
}, 1000);
它应该是$(“文章:第一个孩子”)
编辑
无所谓
:首先
在jQuery中工作。请确保您的ajax正在返回数据,并且正在创建文章元素。如果没有创建元素,那么它将返回未定义。在成功函数之前,尝试在ajax调用中添加:async:false
$.ajax({
type:'GET',
url:'data.json',
dataType:'json',
async:false,
success: runData(data)
});
function runData(data){
$.each(data.article, writeData)
function writeData(keys,values){
var pubDate = values.pubDate;
var headline = values.headline;
var bodyText = values.bodyText;
$('#articles').append('<article><time pubdate="pubdate">' + pubDate + '</time><h2><a href="#">' + headline + '</a></h2><p>' + bodyText + '</p></article>');
}
}
$.ajax({
类型:'GET',
url:'data.json',
数据类型:'json',
async:false,
成功:runData(数据)
});
函数runData(data){
$.each(data.article,writeData)
函数writeData(键、值){
var pubDate=values.pubDate;
var headline=values.headline;
var bodyText=values.bodyText;
$(“#articles”)。追加(“”+bodyText+””);
}
}
$(“#文章:第一”)。。你错过了“#”@Sarath no OP没有错过任何”#你发布的代码应该可以工作,你在其他地方犯了错误。提供您在何处/如何使用此代码的上下文很好!!现在所有的东西都贴出来了。谢谢为什么会这样?元素正在被创建。我只是无法访问它们的positionsHanks,但没有什么区别:(好吧,看起来$.getJSON()总是进行异步调用来获取数据,但由于您使用的是$ajax,我认为您可以将“数据”传递给您的函数,而不必使用$.getJSON
console.log(currentElement);
setTimeout(function()
{
var currentElement = $("article:first");
console.log(currentElement);
console.log(currentElement.position().left);
}, 1000);
$.ajax({
type:'GET',
url:'data.json',
dataType:'json',
async:false,
success: runData(data)
});
function runData(data){
$.each(data.article, writeData)
function writeData(keys,values){
var pubDate = values.pubDate;
var headline = values.headline;
var bodyText = values.bodyText;
$('#articles').append('<article><time pubdate="pubdate">' + pubDate + '</time><h2><a href="#">' + headline + '</a></h2><p>' + bodyText + '</p></article>');
}
}