4

だから私は非常に単純なhtmlを持っています:

​<ul>
    <li value="test">test</li>
</ul>​​​​​​​​​​​​​​​​​​​​​​​

そしてこのjqueryスクリプト

alert($("li").attr("value"));

戻るはずtestですが、0を返します。なぜこれが発生するのですか?

4

4 に答える 4

6

liタグ内のテキストを返したい場合は、次のようにします。

alert($("li").text());​

'value'属性は使用できません(liタグの'value'属性は数値のみです)。名前をdata-valueに変更します。

alert($("li").attr("data-value"));​
于 2012-11-11T13:32:35.263 に答える
1

基本的に、セレクターはliあなたが持っているすべての要素をキャプチャしています。セレクターをより具体的にすることをお勧めします。最初<li>に使用できるのは-

$('li:first').attr('value');

属性を使用するのidも良いでしょう。

ここでもう1つ注意すべき点は、要素内の実際のテキストコンテンツではなく、valueという属性の値を抽出しようとしていることです。属性値が必要な場合は、正しい方向に進んでいます。コンテンツが必要な場合は、text()またはを使用してみてくださいhtml()

処理する要素が複数ある場合は、$.each関数の使用を検討することをお勧めします。

var liValues = [];
$.each('li',function(index,value){
  liValues.push(value.attr('value'));
});
于 2012-11-11T13:32:30.550 に答える
1

は要素valueの有効な属性ではないため、これは機能していないようです。この例liでわかるように、属性の名前を変更してコードを機能させることができます(ただし、どちらも有効ではないと思います...奇妙です)。relrel

このデータを別の場所に保存することを検討することをお勧めします。おそらくdata-*属性を使用します。

​&lt;ul>
    <li data-value="test">test</li>
</ul>​​​​​​​​​​​​​​​​​​​​​​​

alert($("li").data("value"));
于 2012-11-11T13:38:30.520 に答える
1

値をフェッチする場合、タグのvalue属性は数値のみにすることができます。liそれ以外の場合は、常に0になり
ます。値の代わりにインデックスを使用できます。以下のように:

.attr("value", function (currentValue, index) { return index } )

どこ

  • currentValue現在の要素の値です。
  • index現在の要素の配列インデックスです。
于 2020-12-27T11:28:45.027 に答える