【发布时间】:2014-12-05 11:21:50
【问题描述】:
所以我有这段 html 代码:
<div id="widget-injection">
<script id="metamorph-15-start" type="text/x-placeholder"></script>
<div id="ember977" class="ember-view widget-content">
...
</div>
<script id="metamorph-15-end" type="text/x-placeholder"></script><script id="metamorph-10-end" type="text/x-placeholder"></script>
...(more widgets with the same structure as above)
</div>
在我的 div“widget-injection”中,我有多个小部件。我用这个遍历每一个以获得他们的html:
this.$(".widget-content").each(function(i){
console.log($(this).prev()[0]);//It prints the correct string that I want "<script id="meta..."
widgetsHtml.push($(this).prev()[0]+$(this).html()+$(this).next()[0]);
});
它在小部件内容中运行良好,但是,如果你注意到我得到了每个 prev() 和 next() 元素,它们是围绕每个小部件的 ember.js 符号脚本。那是不起作用的部分。我想将这些 prev() 和 next() 字符串附加到由 $(this).html() 产生的字符串(这是每个小部件内容的 HTML)。虽然,当我想要的只是对应的字符串时,我总是从我的 prev() 和 next() 元素中得到“[object HTMLScriptElement]”而不是"<script id="meta..."。所以我的问题是,如何将作为 DOM 脚本的元素转换为纯文本/字符串?
PS:如果我在小部件内容中有 <script id="meta...">,它最终会被正确转换为文本。
编辑:我忘了说我尝试了 html()、text()、val()、innerText、innerHTML 等其他所有方法,你可以命名它。我总是得到空字符串或未定义。
提前致谢
【问题讨论】: