如何在$('body')中添加这些HTML标记。附加脚本?

时间:2016-02-17 19:46:11

标签: javascript jquery html css xml

Javascript开发人员,

我有这个脚本,我在我的模板中动态显示html:

$(document).ready(function() {
    var credits= $('body').append('<div id="wrap"><div id="wrapp-inner"><div id="wrapleft"></div><div id="wrapright">Designed Templatezy</div></div></div>');
});

现在我想将<a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a>添加到该垃圾邮件div中,但它不能显示博客标题,也不会添加网站的网址。

提示:这是博客模板中的<a expr:href='data:blog.homepageUrl'> html / expression标记,可为您的网站主页创建链接。例如http://example.com,其中<data:blog.title/>是一个标记,显示您的博客标题,如“Stack Overflow”。它很容易添加到模板中,但我发现在将其添加到该追加脚本时很难。

我尝试过以下但不起作用:

$(document).ready(function() {
    var credits= $('body').append('<div id="wrap"><div id="wrapp-inner"><div id="wrapleft"><a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a></div><div id="wrapright">Designed Templatezy</div></div></div>');
});

所以请任何人帮我在该追加脚本中的wrapleft div之后添加此<a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a>。感谢。

更新:

我可以在脚本中添加为常规链接:如href stackoverflow.com

$(document).ready(function() {
    var credits= $('body').append('<div id="wrap"><div id="wrapp-inner"><div id="wrapleft"><a href="stackoverflow.com">stackoverflow</a></div><div id="wrapright">Designed Templatezy</div></div></div>');
});

并且这项工作,但是如何在脚本中添加<a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a>来工作,在模板中添加并显示带有标题的网站标题很简单,但是如何添加该脚本内部在leftwrap之后追加。我添加它,但它以纯文本形式出现。

2 个答案:

答案 0 :(得分:0)

由于您使用的是模板语言,因此可能会在输出到达浏览器之前处理模板语言。如果不是,如果它在到达浏览器后以某种方式处理,那么jQuery可能试图从.html()中删除不需要的代码,而不是识别标签。如果你想要一些更干脆的东西,你也可以使用.text()。

然而,以最纯粹的形式回答你的问题(通过jQuery)。

在你的第二个例子中,你将所有内容都包装在div标签中,但这可以使用.wrap()完成...你应该做的是使用选择器来定位你想要的页面的哪个部分。另外,请注意你写了“wrapp-inner”而不是“wrap-inner”......

让我们回到你原来的问题。您想要在页面底部附加一个链接。在doc ready函数中:

$('body').append("somehtml"); // append to body

但是,为了保持理智,您应该创建一个“目标”div来填充。例如:

HTML(正文):

<div id="credits"></div>

在文件准备中:

$('#credits').append("somehtml");

看到这个证明两者的jsfiddle。 https://jsfiddle.net/83fbnwe4/

这显示了.html()和.append之间的区别,以及.html()有效附加的方法:

https://jsfiddle.net/83fbnwe4/2/

<强>更新

要用其他方法包含其他答案,基本上你可以从跳转中显示它并用CSS隐藏它,或者用jQuery隐藏它:

$('#mylink').hide();

如果你想让href动态化 - 比模板解析器呈现代码的时间晚填充它 - 或者如果包含基于AJAX请求的内容或者只是通过某种方式通过javascript事件,你可以改变它事后使用DOM解析。

// Simple:
$("#mylinkid").attr('href', 'http://www.live.com/');

//Complicated: 
$("a[href^='http://stackoverflow.com']").each(function() {
 this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/, 
 http://stackoverflow.com");
});

(借鉴How to change the href for a hyperlink using jQuery#179713)

答案 1 :(得分:0)

可能的解决方案:

您可以在模板中添加<a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a>

<div id="blogHomepageUrlLink" style="display: none;">
    <a expr:href='data:blog.homepageUrl'><data:blog.title/>™</a>
</div>

所以你的模板处理程序可以处理它。

然后使用你的jQuery:

$('body').append('<div id="wrap"><div id="wrapp-inner"><div id="wrapleft"></div><div id="wrapright">Designed Templatezy</div></div></div>');

您应该可以添加以下链接:

$("#wrapleft").html($("#blogHomepageUrlLink").html());

或合并:

$('body').append('<div id="wrap"><div id="wrapp-inner"><div id="wrapleft">'+$("#wrapleft").html($("#blogHomepageUrlLink").html())+'</div><div id="wrapright">Designed Templatezy</div></div></div>');