3

元の HTML:

<div class = "a">
  <div class="firstNumber">
     <span class="spanClass">4</span>
  </div>

  <div class="secondNumber"> </div>
</div>

<div class = "b">
     ..."firstNumber" div tag repeats here...
     ..."secondNumber" div tag repeats here too but might contain content...

</div>

次のコードを使用して、「secondNumber」div タグが空かどうかを確認しました。そうであれば、「secondNumber」divタグ内に同じ「spanClass」名のspanタグでラップされた「0」を追加したいと思います。しかし、それは機能していません...

<script>
    jQuery(function ($) {
        if ($.trim($('.secondNumber').text()).length==0){
             $(".secondNumber").wrapInner("<span class="spanClass">0</span>"); 

        };
    });
</script>
4

3 に答える 3

2

これを試して:

$('.secondNumber').each(function(i, el) {

   if($(this).find('.spanClass').length == 0) {

        $(this).html('<span class="spanClass">0</span>');

   }

});

編集

$(function() {
    $('.secondNumber').each(function(i, el) {

       if($(this).find('.spanClass').length == 0) {

            $(this).html('<span class="spanClass">0</span>');

       }

    });
});
于 2012-09-24T20:56:02.347 に答える
1

内容が空であることがわかっているのに、なぜ wrapInner を使用するのでしょうか? なぜだめですか:

$(".secondNumber").html('<span class="spanClass">0</span>');

編集:

また、あなたの問題は実際には wrapInner ではなく (私はまだ .html() の方が良いと思いますが)、引用が邪魔になっているようです。私の例を見てください。外側に一重引用符があります。内側の引用符のセットをエスケープしないと、互いに競合する二重引用符のセットが 2 つあります。

于 2012-09-24T20:49:35.393 に答える
0

コードに構文エラーがあります。class 属性には単一引用符を使用する必要があります。

jQuery(function () {
    var $second = $('.secondNumber'); // caching the object
    if ( $.trim($second.text()).length == 0 ){
        $second.wrapInner("<span class='spanClass'>0</span>"); // or $second.append("...")
                              //  -----^
    };
});

http://jsfiddle.net/MKE4T/

于 2012-09-24T20:52:27.547 に答える