0

jQuery で値から 1 を減算しようとしています。私はこのようにすることができました:

$('.notis').text(parseInt($(".notis").text()) - 1);

問題は、<a>this が次のように減算されることです。

<a href="#" class="notis"><img src="/images/icons/picture.png">3</a>

したがって、上記の jquery は値から 1 を減算しますが、画像も削除します! これを行い、画像のhtml保持するにはどうすればよいですか?

4

5 に答える 5

4

prependイメージを一時変数に保存し、次のメソッドを使用してノードに追加できます。

$('.notis').each(function() {
    var $this = $(this);                        // <-- Reference to current elem
    var $img = $this.find('img');               // <-- Reference to <img>
    $this.text(parseInt($this.text(), 10) - 1); // <-- Your logic
    $this.prepend($img);                        // <-- Add image again.
});

デモ: http://jsfiddle.net/sPnhL/

その他の注意事項:

  • parseInt( ... , 10)の代わりに使用しparseInt( ... )ます。ゼロが前に付いた数字は、ブラウザ間で一貫して扱われません。10 の基数を指定すると、数値が正しく解析されます。
  • $('.notis')class を持つすべての要素を選択しますnotis。を使用している場合$('notis').text($('notis').text()-1)、 class を持つすべての要素には最初の要素notisの値が含まれます(最初の の値を返すため)。そのため、コードで使用しました。.notis$('.notis').text().notis.each
  • $(this)複数回使用する場合は$(this)、効率を向上させるために、変数を一時変数に格納する価値があります。
于 2012-01-12T20:53:20.353 に答える
0

より良い解決策があるかもしれませんが、link 要素の子を保存して、テキストを変更した後にそれらを再度添付することができます。

$('.notis').each(function (index, element) {
    var $children = $(this).children();
    $(this).text(parseInt($(this).text()) - 1).prepend($children);
});

ここにデモがあります: http://jsfiddle.net/epuxy/ (リンクをクリックすると一番下の数字が変わるのを見てください)

于 2012-01-12T20:53:39.873 に答える
0

<span>番号を aで囲み、その内容を置き換えることをお勧めします。

于 2012-01-12T20:53:50.760 に答える
0

3 を div または span (推奨) クラスにラップし、そこから実行します。

于 2012-01-12T20:53:54.267 に答える
0

最善の解決策はspan、番号を囲むことです。これにより、最高のパフォーマンスが得られます。

HTML

<a href="#" class="notis"><img src="/images/icons/picture.png"><span>3</span></a>

jQuery

$('.notis > span').text(parseInt($(".notis").text()) - 1);

このjsFiddleをチェックしてください

于 2012-01-12T20:54:40.593 に答える