问题描述
|
我在页面中具有此HTML结构,并且AJAX请求返回相同的结构:
<div id=\"Feeds\">
<div class=\"items\">
<div class=\"FeedClass\">
content
</div>
<div class=\"FeedClass\">
content
</div>
<div class=\"FeedClass\">
content
</div>
</div>
<div class=\"pager\">
content
</div>
<div class=\"keys\">
content
</div>
</div>
数据内容与上述相同。
如何用更高效的代码替换此JavaScript代码,以将项目中的内容附加到当前项目中,并替换寻呼机和键中的内容。到目前为止,我已经知道了,AJAX请求返回的是data
:
var itemsFirstChildTag = $(id + \" .items:first-child\").get(0).nodeName;
var id = \"#Feeds\";
$(\".items\",id).append($(id + \" .items > \"+itemsFirstChildTag,\"<div>\"+data+\"</div>\"));
$(\".keys\",id).replaceWith($(id + \".keys\",\"<div>\"+data+\"</div>\"));
$(\".pager\",id).replaceWith($(id + \".pager\",\"<div>\"+data+\"</div>\"));
解决方法
我会尝试使用更好的通信方法,例如JSON或XML。仅此一项就可以使整个ajax请求更高效。想法是您可以将返回的append1追加到适当的位置,而无需返回任何HTML。
$.ajax({
type: \'post\',url: \'some-script.php\',success: function( response ){
//neat jquery element creation
var newFeed = $(\"div\",{
\"class\" : \"feedClass\",\"text\" : response.newText
});
$(\".items\").append(newFeed);
$(\".keys\").text(response.newText);
}
});
如果需要修改元素的文本,则可以使用.text()。
得到:
$(\".some-class\").text();
组:
$(\".some-class\").text(\"Some Text\");
如果需要修改元素的HTML,请使用.html()
GET / SET与$.text()
相同
简而言之,我绝对建议您阅读尽可能多的jQuery文档,那里有很多巧妙的技巧/演示。
, var feeds = document.getElementById(\“ feeds \”);
var feeddivs = feeds.getElementsByTagName(\“ div \”);
var len = feeddivs.length;
对于(var i = 0; i
}