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() 更好),而是你的引用妨碍了你。看看我的例子。我在外面有单引号。如果您不转义内部引号,您有两组双引号将相互争用。

于 2012-09-24T20:49:35.393 回答
0

您的代码中存在语法错误,您应该对类属性使用单引号。

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 回答