2

jQueryを使用して、モバイルアプリで使用するために選択をulにコピーしています。選択オプションの一部の値には、先頭に 0 が付いています。選択のオプションの値を模倣するために、li 要素でカスタム属性を使用しています。

値を li:value にコピーすると、先頭の 0 が失われます。li 全体を、外側の ul に追加するリッター文字列として作成することさえ試みました。

html:
<select id="seltest">
<option value="011111">good bye</option>
</select>
<div id="container"></div>

javascript:
$("#container").append("<ul id='thefilter'></ul>");

$("#seltest option").each(function () {
  var optval = $(this).val();
  var strvar = '<li value=\"' + String(optval) + '\">' + $(this).text() + '</li>';
  alert(strvar);
  $("#thefilter").append(strvar);
  var lastli = $("#thefilter li:last");
  alert(lastli[0].outerHTML);  // now the value has lost the leading 0
});

例を示すフィドルは次のとおりです。http://jsfiddle.net/richbuff/4RbH9/7/

先頭の 0 を保持する方法を知っている人はいますか? jQuery がテキストを変更しているようです。

ティア!

4

2 に答える 2

6

ブラウザは実際に仕様を実施しています。Mozilla Developer Networkから:

The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters.

私の数年間の Web 開発ではvalue、リスト項目で属性を使用したことはありません。そのため、一部のユーザーは、次の追加の注意事項に関心を持っているかもしれません。

This attribute was deprecated in HTML4, but reintroduced in HTML5.

于 2013-04-19T03:33:06.930 に答える
1

li 要素でカスタム属性を使用しています

いいえ、そうではありません。LI 要素には標準の属性があります。

これは jQuery とは何の関係もないと思います (DOM プロパティと HTML 属性の間で混乱が生じることを除けば)。以下では:

<ol>
  <li value="06" onclick="alert(this.value)">Show value property
  <li value="06" onclick="alert(this.getAttribute('value'))">Show value attribute
</ol>

IE と Firefox6の両方が両方のアラートを返します。唯一の違いは、最初のケースでは値が数値型で、2 番目の型では文字列であることです ( getAttributeが文字列を返すため)。

リテラル値を保持する場合は、LIでdata-属性を使用します。

于 2013-04-19T04:11:59.107 に答える