jquery附加到不知名的父母身上

时间:2015-04-30 20:34:25

标签: javascript jquery

我有创建动态html的jScript,它的调用方式如下:

  var wrapper = document.createElement('div');
  wrapper.innerHTML = 'blah blah blah';

  jQuery(      $(document.currentScript).parent()[0].tagName 
           +  '#'
           +   $(document.currentScript).parent()[0].id
        ).append(wrapper);

此脚本需要能够放置在任何类型的DOM元素中。

在myJavascript.js内部,我们目前有以下内容:

<div id=''><!--this wont work because there is no div id defined-->
    <script type='text/javascript'
                data-parm-one   = 'foo'
                data-parm-two   = 'bar'
                src='/dirOne/myJavascript.js'>
    </script>
</div>

,这会将包装器附加到父元素。

这有效,但请注意我必须为父元素分配一个任意的id,在这种情况下我称之为 thisNeedsToBeHere 。如果没有ID,它就无法工作。

{{1}}

我尝试的第一件事是使用 $(this).append(wrapper)但是收到了这条消息:

未捕获的TypeError:无法读取属性&#39; createDocumentFragment&#39;未定义的

有没有更好的方法将html附加到我们可能没有ID的父元素?

1 个答案:

答案 0 :(得分:3)

看起来你过度完成了这个。您不需要构造CSS选择器来选择父元素parentNode.tagName + '#' + parentNode.id,因为您已经有一个parent()可用:

var wrapper = document.createElement('div');
wrapper.innerHTML = 'blah blah blah';

$(document.currentScript).parent().append(wrapper);

实际上,你甚至不需要担心选择要追加的父元素,使用jQuery你可以使用after方法:

$(document.currentScript).after(wrapper);