Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数据附加到启动方法的元素?_Javascript_Jquery_Coffeescript - Fatal编程技术网

Javascript 如何将数据附加到启动方法的元素?

Javascript 如何将数据附加到启动方法的元素?,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,当调用MyClass.display()时,我有一个简单的类来附加content.html文件 class MyClass @display: (display) -> $.get 'content.html', (data) -> $('body').append data 上面的代码总是将数据附加到正文的末尾 HTML代码就是这样 <html> <head></head> <body>

当调用
MyClass.display()
时,我有一个简单的类来附加
content.html
文件

class MyClass
    @display: (display) ->
      $.get 'content.html', (data) ->
        $('body').append data
上面的代码总是将数据附加到
正文的末尾

HTML代码就是这样

<html>
  <head></head>
  <body>
    <p>text before</p>
    <script src="file.js" type="text/javascript"></script>
    <script type="text/javascript">
      MyClass.display();
    </script>
    <p>text after</p>
  </body>
</html>

之前的文本

MyClass.display(); 后文

我想知道如何在触发函数的
标记后面添加数据。这将介于
和以下
标记之间

一个要求是我不应该修改HTML标记。我不能像下面的一个答案中所建议的那样将ID直接添加到标记中

我知道这是可能的,因为我可以在谷歌AdSense代码中看到它。但由于他们的javascript代码似乎是加密的,我无法解码它是如何完成的


你知道如何做到这一点吗?

我知道你想做什么。您希望在标记的某些区域内插入HTML

我建议您这样做:

class MyClass
    @display: (display) ->
      $.get 'content.html', (data) ->
        document.write data


之前的文本

MyClass.display(); 后文


将脚本放在页面底部很重要,这样标记就有机会加载。否则,脚本可能会在页面完成加载之前运行

javascript代码运行时,其包含的脚本标记是DOM对象中可用的最后一个元素

你可以像这样抓住它的参考

var ele = $('script:last');
从那里,根据
content.html
的内容,您可以进行必要的工作,将内容放在脚本标记之后(而不是附加在脚本标记内,这不是您要查找的内容)

e、 g.如果
content.html
有自己的顶级元素,
p

<p>
  <strong>hello</strong> world!
</p>
注意1:您必须在
$之外获取引用
ele
。获取
回调。回调以异步方式运行-到那时DOM可能已经加载了更多元素,并且
script:last
可能不再是您的脚本标记

注意2:如果
content.html
不包含封装整个内容的顶级元素,那么您必须自己在回调中封装它,例如
ele.after(“+data+”)


仅供参考:

您能否添加触发该功能的代码?理想情况下包括事件绑定(如果要绑定到事件)。您想将
内容.html
附加到
或替换
,或在
文本之间插入
后?
内容.html
应立即添加到所附
后。要求添加的标记不得超过这对
标记。您可以只需使用document.write()您能提供一个示例吗?出于某种原因,document.write会替换整个页面区域,而不是像预期的那样仅放置在封闭的
之后。对此,我深表歉意。在我的本地测试中,我只是在函数调用的地方使用document.write。事实证明,如果将document.write放入函数中,则在加载整个页面之前,该函数不会运行。此时,document.write的行为不同,将覆盖整个页面。根据您的需求执行此操作的唯一方法是提前知道您希望将内容放置在何处,就像我在使用占位符div的原始答案中所做的那样,或者使用“after”或“before”jquery函数。
<p>
  <strong>hello</strong> world!
</p>
var MyClass = {
  display: function() {
    var ele = $('script:last');
    $.get('content.html', function(data) {
      ele.after(data);
    });
  }
}