首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery .append和附录()悲伤

Jquery .append和附录()悲伤
EN

Stack Overflow用户
提问于 2012-05-25 13:44:27
回答 2查看 505关注 0票数 0

我需要将以下HTML片段添加到文档中,用一个值替换display_spinner param:

代码语言:javascript
复制
<script type="text/javascript" src="http://public.tableausoftware.com/javascripts/api/viz_v1.js"></script>
<div class="tableauPlaceholder" id="tableauPlaceholder" style="visibility:hidden;width:654px; height:1469px;background-image: url('http://tableau.russellchristopher.org:81/Background.gif'); top: 0px; left: 0px; width: 100%; margin-left: 76px;">
    <noscript>
        <a href="#"><img alt="Analytics, Inc. " 
                    src="http://tableau.russellchristopher.org:81/Background.gif" 
                    style="border: none" /></a>
    </noscript>
    <object class="tableauViz" width="654" height="1469" style="display:none;">
        <param name="host_url" value="http%3A%2F%2Fpublic.tableausoftware.com%2F"
        />
        <param name="site_root" value="" />
        <param name="name" value="AnalyticsIncJavaScript&#47;AnalyticsInc" />
        <param name="tabs" value="no" />
        <param name="toolbar" value="yes" />
        <param name="static_image" value="tableau.russellchristopher.org:81/Background.gif"
        />
        <param name="animate_transition" value="yes" />
        <param name="display_static_image" value="yes" />
        <param name="display_spinner" value="" id="display_spinner" />
        <param name="display_overlay" value="yes" />
        <param name="display_count" value="yes" />
    </object>
</div>

下面是我想出的(JSFiddle这里:http://jsfiddle.net/9vBGq/ )

代码语言:javascript
复制
$(document).ready(function () {
    var $placeholder = $('<div class="tableauPlaceholder" style="width:654px; height:1469px;background-image:  url("http%3A%2F%2Ftableau.russellchristopher.org:81%2FBackground.gif"); top: 0px; left: 0px; width: 100%; margin-left: 76px;"></div>'),
        $noscript = $('<noscript> <a href="#"><img alt="Analytics, Inc. " src="http%3A%2F%2Ftableau.russellchristopher.org:81/Background.gif" style="border: none" /></a></noscript>'),
        $tableauViz = $('<object class="tableauViz" width="654" height="1469"></object>'),
        $host_url = $('<param name="host_url" value="http%3A%2F%2Fpublic.tableausoftware.com%2F">'),
        $site_root = $('<param name="site_root" value="" />'),
        $sheetName = $('<param name="name" value="AnalyticsIncJavaScript&#47;AnalyticsInc" />'),
        $tabs = $('<param name="tabs" value="no" />'),
        $toolbar = $('<param name="toolbar" value="yes" />'),
        $static_image = $('<param name="static_image" value="http://tableau.russellchristopher.org:81/Background.gif"/>'),
        $animate_trasnsition = $('<param name="animate_transition" value="yes" />'),
        $display_static_image = $('<param name="display_static_image" value="yes" />'),
        $display_overlay = $('<param name="display_overlay" value="yes" />'),
        $display_count = $('<param name="display_count" value="yes" />'),
        $display_spinner = $('<param name="display_spinner" value="' + 'no' + '" />');
    $placeholder.append($noscript).append($tableauViz).append($host_url).append($site_root).append($sheetName).append($tabs).append($toolbar).append($static_image).append($animate_trasnsition).append($display_static_image).append($display_overlay).append($display_count).append($display_spinner).appendTo('body');
    console.log(document.body);
});​

从我的console.log中可以看出,存在着许多问题--而且我对这些东西还太陌生,无法确切地知道原因:

  • 在我的<div>中编码的URL看上去被吞食了。我做错了什么?嵌套在noscript块中的
  • <a>标记看起来很糟糕
  • ,当我在我的每个params上列出我的<a> />之后,它应该关闭,但不知道该如何处理。

我怀疑你的优点,并踢我在正确的方向在几个seconds....please踢我,你认为合适吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-25 13:57:32

我认为最好的解决方案是在html中创建一个模板,然后读取它,而不是用javascript..

有点像

代码语言:javascript
复制
<!-- template code follows -->
<script type="text/template" id="tableau">
<div class="tableauPlaceholder" id="tableauPlaceholder" ..
..snip..
        <param name="display_spinner" value="{placeholder}" id="display_spinner" />
..snip..
</div>
</script>
<!-- end of template -->

然后,需要以下代码来加载模板并更改占位符。

代码语言:javascript
复制
var template = $('#tableau').html(),
    filledTemplate = template.replace('{placeholder}','value for spinner');

$('body').append( filledTemplate );

Demo在 http://jsfiddle.net/gaby/9vBGq/1/

(我已经从模板中删除了noscript元素,因为所有操作都是通过脚本完成的)

票数 2
EN

Stack Overflow用户

发布于 2012-05-25 13:52:38

在我的外观编码的网址。我做错什么了?

你结束这种风格太早了。从背景图像url中删除引号。

代码语言:javascript
复制
var $placeholder = $('<div style="background: url(some_very_long_url)"></div>')

有一个结束标记,在我列出我的params之后,它应该关闭

它已经关闭了。您所做的是将params附加到$placeholder中,而不是$tableauViz --如果您想要在其中添加一些东西,就应该将它们附加到其中。

代码语言:javascript
复制
$tableauViz.append(stuff).append(some_more_stuff)

关闭我的每一个参数的/>是缺失的-再次编码奇怪,我想,但不知道如何处理。

控制台在显示期间忽略/>。很好,他们都是兄弟姐妹。如果不是的话,每个param都会嵌套在前面的部分。

关于<noscript>,通过关闭JS来测试它。这样,您就可以看到它是否正确地呈现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10755501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档