1

我有一个引用另一个 .js 文件的 javascript 链接。我一直在尝试输出图像(用于测试目的),但我不确定这样做的正确方法是什么。

    alert("beginning");
    //var link = $("<a href='http://juixe.com'>Hello, <b>World</b>!</a>");
    //$('body').append(link);
    //document.write("hi");
    //document.write("<div><img src='http://s3-media2.ak.yelpcdn.com/bphoto/xqC6Iy5mOLb_8mwMKGv8_w/l.jpg' /></div>");
    alert("before function");
(function(){



    alert("middle");
    var links = $("<a href='http://juixe.com'>Hello, <b>World</b>!</a>");
    $('body').append(links);
    alert("after middle");
    //alert($("img").attr("id"));
    document.write("hi");
    document.write("<div><img src='http://s3-media2.ak.yelpcdn.com/bphoto/xqC6Iy5mOLb_8mwMKGv8_w/l.jpg' /></div>");

    alert("end");
}());

我能够警觉开始,一直到中间。好像var links不行啊 我正在尝试在此.js文件中使用 HTML。本质上,我希望能够做一些模态窗口,但我现在正试图输出图像以用于测试目的。

另外,这是jquery的正确方法吗?

提前致谢!

4

2 回答 2

2

你的代码是一个奇怪的组合。Jquery 代码几乎总是需要在页面加载后运行,而在页面加载document.write后永远不能使用。

您错误地将 jQuery 包装在立即执行的函数中。jQuery 的正确包装在:

$(document).ready(function(){
  /* html of page exists now, run jQuery here */
});// notice no extra "()" after close brace as you have

或做同样事情的速记版本:

$(function(){
  /*html of page exists now, run jQuery here */
});// notice no extra "()" after close brace  as you have

如果您更改所有document.writeto$('body').append(/* your content*/)并将所有代码放入上述包装器中,您将获得更好的成功。

jQuery 文档和 API 中有大量信息。可以在此处找到有关我展示的包装的更多详细信息的良好起点:http: //docs.jquery.com/How_jQuery_Works

于 2012-06-24T00:46:49.743 回答
1

您最大的问题已在另一个答案中得到解决。append您未正确包装 JQUery,因此本质上 JQuery 在到达您的语句时还没有准备好执行。

没有必要将您的 html 包装在 JQuery 对象中(在这种情况下):

var links = "<a href='http://juixe.com'>Hello, <b>World</b>!</a>";
$('body').append(links);

或者简单地说:

$('body').append("<a href='http://juixe.com'>Hello, <b>World</b>!</a>");

就最佳实践而言,根据上下文使用append或是不错的选择appendToprepend您还可以使用:

$("body").html("/*Your HTML here*/")

document.write归根结底,您有很多选择,但不惜一切代价避免。非 JQuery 方法将.innerHTML与 DOM 元素一起使用。在没有 JQuery 的情况下,这也是一个很好的方法。

于 2012-06-24T00:54:17.090 回答