2014-12-05 59 views
0

所以我的HTML代码块:得到一个DOM <script>标签的文本使用jQuery

<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> 

我格“窗口小部件注射”我在里面有多个部件。我遍历每一个与此得到他们的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]);     
}); 

它的工作原理内部小部件,内容很好,但,如果你注意到我一次上一个()和next()元素,这是ember.js符号脚本围绕每个小部件。这是不起作用的部分。我想将这些prev()和next()字符串附加到由$(this).html()(它是每个widget-content HTML)产生的字符串。虽然,我总是最终从我的prev()和next()元素中获取“[object HTMLScriptElement]”而不是"<script id="meta...",而我想要的只是对应的字符串。所以我的问题是,如何将一个DOM脚本元素转换为纯文本/字符串?

PS:如果我在widget-content中有<script id="meta...">,它最终会被正确转换为文本。

编辑:我忘了说,我尝试了一切从HTML(),文本(),val(),innerText,innerHTML,你的名字。我总是空字符串或未定义。

在此先感谢

回答

1

您已经使用$(本)做了同样的方式。通过使用.html()

.prev [0]让你获得DOM元素。

$(this).prev().html()+$(this).html()+$(this).next().html() 

,如果你不想要的内容,但实际的标签,你将不得不使用outerHTML

$(this).prev()[0].outerHTML + $(this)[0].outerHTML + $(this).next()[0].outerHTML 
+0

我忘了说我尝试了其他一切html()text()val()你的名字。我总是空字符串或未定义。 – 2014-12-05 11:41:33

+0

@JoãoMartins我不熟悉ember.js。您的示例是实际的html还是脚本标记内的内容?因为现在他们是空的。 – Andy 2014-12-05 12:09:42

+0

脚本内没有任何内容。这只是一个地方,烬使用知道在哪里绑定的元素,我猜。所以,这只是 2014-12-05 12:22:14

0
$(".widget-content").each(function(i){ 
    console.log($(this).prev());//It prints the correct string that I want "<script id="meta..." 
    // get div html 
    var getthishtml = $(this).html(); 
    // empty this div html 
    $(this).html(); 
    // move prev script inside div 
    $($(this).prev()).prependTo(widgetsHtml); 
    // append div html 
    $(this).append(getthishtml); 
    // move next script inside div 
    $($(this).next()).prependTo(widgetsHtml); 
}); 

DEMO您可以检查inspent元素,得到的结果

+0

我忘了说,我试着其他一切html()text()val()你的名字。我总是空字符串或未定义。 – 2014-12-05 11:42:50

+0

我更新我的代码 – 2014-12-05 11:49:31

0

如果你只想平淡

你的情况

所以脚本标记的文字: http://jsfiddle.net/ef93x2aq/

var script = documenet.getElementById('metamorph-15-start'); 
var text = script.innerText; 
document.write(text); 
相关问题