在jQuery </div> </span>中的空<div>标记中插入带有内容的<span>标记

时间:2012-09-24 20:46:45

标签: jquery

原始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标签是否为空。 如果是,那么我想添加“0”包含带有相同“spanClass”名称的span标签 在“secondNumber”div标签内。但它不起作用......

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

        };
    });
</script>

3 个答案:

答案 0 :(得分: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>');

       }

    });
});

答案 1 :(得分:1)

为什么在知道内容为空时使用wrapInner?为什么不:

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

编辑:

此外,看起来你的问题确实不是wrapInner(虽然我仍然认为.html()更好),而是你的引用阻碍了。看看我的例子。我在外面有单引号。你有两组双引号,如果你不逃避内部引号组,它们将相互争用。

答案 2 :(得分: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/