当社の E コマース システムと POS システムを有料で統合した後、私のオンライン ストアはアルファベット順/年代順にサイズを表示するようになりました。例えば。
AndL | M | S | XL
の代わりにS | M | L | XL
7 | 7 1/2 | 7 1/4 | 7 1/8 | 7 3/8
これは、サイズ属性/オプションが POS システムから取得され、各製品に固有であるためです (ばかげていますが、それが統合のしくみです)。これは、それらが表示される順序を手動で選択することができないことを意味します。これには、統合の目的を無効にする何千もの手動変更が必要になるためです。
jQuery ソリューションを思いついたのですが、いくつかの問題が発生しました。これを数値およびアルファベットのサイジングに適用しましたが、同じ問題があります。
$(".Value li:contains('XL')").insertBefore($(".Value li:contains('XXL')"));
$(".Value li:contains('L')").insertBefore($(".Value li:contains('XL')"));
$(".Value li:contains('M')").insertBefore($(".Value li:contains('L')"));
$(".Value li:contains('S')").insertBefore($(".Value li:contains('M')"));
$(".Value li:contains('XS')").insertBefore($(".Value li:contains('S')"));
これは、姉妹値を持つ単一の文字値に到達するまで正常に機能します。言い換えれば、そのコードは LMS を SML にうまく再配置しますが、XS または XL がある場合、または数値サイズが 1 桁になる場合に問題が発生します。7 1/4、7 1/8 などがある場合のサイズ 7 など。これは明らかに .contains() 関数によるものです。
.filter() を使用してみましたが、.insertBefore はもちろん、必要な要素を選択することもできません
ありがとう。
要求に応じて HTML で編集します。
<div class="Value">
<ul>
<li>
<label><input name="variation[1]" type="radio" class="RadioButton" value="5429" /> XL</label>
</li> <li>
<label><input name="variation[1]" type="radio" class="RadioButton" value="5430" /> 2XL</label>
</li> <li>
<label><input name="variation[1]" type="radio" class="RadioButton" value="5431" /> M</label>
</li> <li>
<label><input name="variation[1]" type="radio" class="RadioButton" value="5432" /> L</label>
</li> <li>
<label><input name="variation[1]" type="radio" class="RadioButton" value="5433" /> S</label>
</li>
</ul>
</div>
編集 2
上記の HTML と私が今気付いたことからわかるように、ラベル (サイズ) のアルファベット順/時系列ではなく、ラジオ ボタンの値に対して時系列で表示されます。前述のように、これは POS から製品をインポートするときにショッピング カートによって動的に生成されます。