0

以下のコードを使用して、文字をスパンで動的にラップしました。

    $("span.count").children().andSelf().contents().each(function(){
    if (this.nodeType == 3) {
        var $this = $(this);
        $this.replaceWith($this.text().replace(/(\w)/g, "<span>$&</span>"));
    }
});

ラップされた要素の数を(完了したら)カウントしようとしているので、その量に基づいてクラスをコンテナーにアタッチできます。私はさまざまな方法を試しましたが(私の問題は動的に作成されたコンテンツをカウントしようとしていることだと思います)、どれもうまくいかないようです。以下は私がこれまでに持っているものです:

    var n = $("span.count").live().children().length;
if (n < 3) {
    $(".counter").addClass("four");
}

どんな助けでも大歓迎です。

4

2 に答える 2

1

挿入するクラスにクラスを追加し、<span>そのクラスの数を数えることができます。

于 2012-10-17T02:23:24.007 に答える
0

あなたがしようとしている方法を使用することはできませ.live()ん。現在は非推奨であり、委任されたイベント処理にのみ使用され、DOM の変更には使用されません。追加するスパンにクラスを追加する場合は、単純に数えることができます。

$("span.count").children().andSelf().contents().each(function(){
    if (this.nodeType == 3) {
        var $this = $(this);
        $this.replaceWith($this.text().replace(/(\w)/g, "<span class="letter">$&</span>"));
    }
});

var cnt = $(".letter").length;

または、カスタム置換関数を使用して、置換ごとにカウンターをインクリメントすることもできます。

var spanCnt = 0;
$("span.count").children().andSelf().contents().each(function(){
    if (this.nodeType == 3) {
        var $this = $(this);
        $this.replaceWith($this.text().replace(/(\w)/g, function(match) {
            ++spanCnt;
            return("<span>" + match + "</span>");
        }));
    }
});
于 2012-10-17T02:41:30.910 に答える