2014-12-05 72 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); 
相關問題