jQueryを使った方法は知らないけれど, 生のDOMを使って良いならこんな感じで.
JavaScript
1{
2 const btn = document.querySelector(".btn-in>.btn-icon");
3 const div = document.createElement("div");
4 div.classList.add("btn-text");
5 let node;
6 while(node = btn.nextSibling, node && node.nodeType == Node.TEXT_NODE){
7 div.textContent += node.nodeValue;
8 node.remove();
9 }
10 btn.parentNode.insertBefore(div, btn.nextElementSibling);
11}
基準となるノード(ここではbtn-icon
クラスのノード)を基準に後続のノードを取得し, ノードがありかつそのノードがテキストノードの場合に新たに挿入するdiv
要素にその中身をコピーします.
対象が複数あるならループで回すだけですよ.
JavaScript
1{
2 const btns = document.querySelectorAll(".btn-in>.btn-icon");
3 for(let i = 0, len = btns.length; i < len; i++){
4 const btn = btns[i];
5 const div = document.createElement("div");
6 div.classList.add("btn-text");
7 let node;
8 while(node = btn.nextSibling, node && node.nodeType == Node.TEXT_NODE){
9 div.textContent += node.nodeValue;
10 node.remove();
11 }
12 btn.parentNode.insertBefore(div, btn.nextElementSibling);
13 }
14}