0
我想用span標記包裹每個單詞。當段落中沒有HTML標籤時,我成功製作了它。但是當段落裏面有HTML標籤時,它會變得很糟糕。用span(例如)標籤包裝div中的單詞,而div中有HTML標籤
這裏例如,當沒有HTML標記是段落內:
$('div').html(function(i, v) {
return $.trim(v).replace(/(\w+)/g, '<i class="woord">$1</i>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
11111 22222 33333 44444
</div>
但是,當有段內的HTML標籤,它會亂如下:
$('div').html(function(i, v) {
return $.trim(v).replace(/(\w+)/g, '<i class="woord">$1</i>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
11111 <span>22222 <small>33333</small></span> 44444
</div>
感謝DrunkenPoney試圖實現這一點。他做的最多,但它打破了內部跨度的內容。
我想要的結果是這樣的地方出現在瀏覽器中的每一個字要與<i class="woord">
包裹如下:
<div>
<i>June</i> <span><i>10</i> <i>sssssss</i></span> <i>ggdgfdf</i>
</div>
他的代碼,結果打破了原有span
代碼結構如下:
<div>
<i class="woord">11111</i> <i class="woord"><span>22222</span></i> <i class="woord"><small>33333</small></i> <i class="woord">44444</i>
</div>
奇妙的傢伙!這是簡潔而準確的。非常感謝:)另外還有一件事讓我想起了完成這些固體材料。假設我想將這個想法應用於具有不同換行替換的不同HTML元素,那麼我是否必須重複此所有代碼塊,然後更改'div'和'',或者有一些方法可以應用該想法而不重複代碼塊? –
@MoradHamdy這取決於你的邏輯的複雜性。如果您只想用另一個元素替換'',則可以在函數'wrapHtml'中添加一個參數並替換那裏的''。然而'wrapHtml'的輸入只是'textNode',所以它所知道的只是'textNode',如果你的意思是你需要對包含在***不同元素中的不同單詞應用不同的HTML包裝器(除了''') *** - 那麼您可能需要檢查父元素(包含文本節點)以相應地應用相應的標記。我認爲你可以在'wrapHtml'函數中修改代碼 – Hopeless
我認爲我的評論並不清楚。我的意思是多次爲不同的地方應用此代碼,例如:http://codepen.io/moradxd/pen/xqPyya您可以看到我重複了js代碼。有沒有辦法實現這種插件方法,例如傳遞containerSelector,例如'.wrap-1',wordTag例如'',wordClass例如'.word-1',或者你認爲會簡化重複的js代碼。如果這對你來說很複雜,那麼沒問題。我真的很感謝你已經做出了什麼:) –