こんばんは、お世話になります。
もっとこういう書き方がある、こう書いた方が速くなる、など評価や修正を頂けると嬉しいです。よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
jQuery3以降は$(document).ready(function() ...
は非推奨で、$(function() ...
で良いそうです。
参考
ただ、どちらの書き方であれ、ready(DOMContentLoadedイベント)のタイミングまで待つと、元のulが一瞬見えてしまう事もあるので、スクリプトで動的に書き換えるというやり方自体が、良い解決策ではない気がします。可能ならテンプレ触るのが一番だと思います。
WordPressのscriptタグがどこに挿入されるのか知らないですが、可能ならul要素が出てきた後のbodyタグ内にできるだけ早く、readyイベント抜きのベタ書きにして、チラつきの可能性を下げるのが良いと思います。
試しに書き替えてみたソースも一応貼っときますが、あまり変わらないので参考程度で。
javascript
1const $ul = $('.sidebar ul') 2const $select = $('<select onChange="location.href=value;"><option>-</option></select>') 3 4$(`a`, $ul).each(function() { 5 const $a = $(this) 6 $select.append(`<option value="${$a.prop('href')}">${$a.text()}</option>`) 7}) 8 9$ul.replaceWith($select)
投稿2022/01/08 14:19
総合スコア831
0
jQueryを不要とし1行で済むこと。
js
1<div class="sidebar"> 2<ol> 3 <li><a href="http://x.jp?abc">abc</a> 4 <li><a href="http://x.jp?def">def</a> 5 <li><a href="http://x.jp?ghi">ghi</a> 6</ol> 7</div> 8 9<select onchange="location.href=this.value"> 10<option value="">-</option> 11</select> 12 13<script> 14 15[...document.querySelectorAll ('.sidebar li a')].reduce ( 16 (a,b)=> (a.appendChild (new Option (b.textContent, b.href)), a) 17,document.querySelector ('select')); 18 19</script> 20
投稿2022/01/08 13:51
総合スコア616
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。