这是我用javascript写的第一件事,所以我希望它是一个基本的错误
我想在这里实现的目标: 从页面中获取一堆链接,加载内容查询内部链接并将其添加到当前页面上的列表中。
我在追加时收到错误 在JQ文档中,他们说该方法可以获得JQ对象
<script type="text/javascript">
$(document).ready(function () {
var wtf = $(".download");
var links = $("a", wtf)
links.each(function (index) {
var newFrame = document.createElement("div");
$(newFrame).load($(this).context.href, function (response, status, xhr) {
if (status == "error") {
alert("error");
}
$("a", response).each(function (index) {
$("#results").append($(this));
});
});
// $("#results").append(newFrame);
});
});
</script>
答案 0 :(得分:3)
让我们看看我的猜测错误检查能力是否足够好:
// No point really in using context here.
// This would be better, or at least more readable
var links = $(".download a");
// No need to add in the argument if you're not actually going to use it
links.each(function() {
// Doing this will get you create the jQuery object
// without having to use the DOM createElement method
var newFrame = $('<div />');
// this.href is shorter and neater
newFrame.load(this.href, {
'html': '.ajax'
}, function(response, status, xhr) {
if (status == "error") {
console.log(xhr);
}
// This is the odd part - response is a selector?
// This should loop through each anchor that are a child
// Of the element selected by the response receieved
// Using appendTo here is better than looping through
// each element and using .append() there
$(response).find("a").appendTo("#results");
// And finally of course because this is .load()
// Remember that the actual response is also
// appeneded to the element in question,
// hence the extra .ajax appearing there
});
// This occures outside of callback,
// so it's actually executed *before* the code above
$("#results").append(newFrame);
});
请参阅jsfiddle以了解实际工作的这段代码:http://jsfiddle.net/E589q/4/
答案 1 :(得分:0)
load函数没有错误处理功能,仅用于简单的Ajax功能。
试试这个
<script type="text/javascript">
<!--
$(document).ready(
function () {
var links = $("a.download")
$.each(links,
function () {
var url = $(this).attr('href');
var newFrame = $("<div></div>").appendTo('body').css({position: 'absolute', top: '100px', left: '100px'});
$(newFrame).load(url)
})
})
//-->
</script>