为什么jQuery.appendTo()/ html()/ ...自动创建全局JavaScript变量?

时间:2016-06-13 07:32:17

标签: jquery

如果此问题重复,请抱歉。

最近我发现jQuery在调用使用DOM id传递的函数后会添加全局JavaScript变量,例如$('<div id="foo" />').appendTo() / $.html('<p id="bar" />)。该变量指向具有相同id的DOM对象,显示为these lines

<body>
    <div id="container"></div>
    <!-- include jquery.js -->
    <script>
         typeof(foo);                                          // "undefined"
         typeof(bar);                                          // "undefined"

         $('<div id="foo"></div').appendTo('#container');
         $('#foo').html('<div id="bar"></div>');

         typeof(foo);                                          // "object"
         typeof(bar);                                          // "object"

         foo instanceof HTMLDivElement;                        // true
         bar instanceof HTMLDivElement;                        // true

         foo === $('#foo')[0];                                 // true
    </script>
</body>

API文档中是否引入了此功能?究竟发生了什么?

问候!

1 个答案:

答案 0 :(得分:0)

感谢@RoryMcCrossan,它与jQuery无关。

@ViewChild('target', {read: ViewContainerRef}) target;

constructor(private resolver: ComponentResolver) {}

createComponent() {
  this.resolver.resolveComponent(MyComp).then(
    (factory:ComponentFactory<any>) => {
      var cmpRef = this.target.createComponent(factory);
      var cmp = cmpRef.instance;
    });
}

查看此问题的详细信息Do DOM tree elements with ids become global variables?