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 开发者网络

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 和 Firefox 都会返回6两个警报。唯一的区别是,在第一种情况下,值是数字类型,而在第二种情况下是字符串(因为getAttribute返回一个字符串)。

如果要保留文字值,请在 LI 上使用data-属性。

于 2013-04-19T04:11:59.107 回答