0

可能重复:
在 jQuery 的空 <div> 标记中插入带有内容的 <span> 标记

我今天早些时候发布了同样的问题,有 4 个答案似乎都在 jsFiddle 中工作,但在我的真实网站上却没有。我想以不同的方式解决这个问题,以便有人可以在这里帮助我,因为我无法弄清楚我的代码有什么问题。

这是我无法控制的原始 HTML:

<div class="a">
   <span class="b">4</span>
</div>

在原始代码中,只要 span 标签之间没有值,整个 span 行就消失了。它留下这样的代码:

<div class="a"> </div>

我想实现以下结果,即使没有价值,跨度线也会出现。

<div class="a">
   <span class="b">0</span>
</div>

在我看来, div 标签之间有一个空格,所以我使用了 trim 方法。我得到的 4 个答案与我的非常相似,但在我的真实网站上没有任何效果。会不会是我没有弄清楚的其他事情?

这是我尝试过的:

<script>
    jQuery(function ($) {

        if ($.trim($('.a').text()).length==0){
            $(".a").html('<span class="b">0</span>');


        };
    });
</script>
4

2 回答 2

0

You can try this:

jQuery(function ($) {

        if ($('.a').children('span').length == 0){
            $(".a").html('<span class="b">&nbsp;</span>');
        };
});

It's a small variation from your code to check if .a has a children span tag and also I fill the tag with an empty space as I think that would be in more consonance with the original code.

Also take care if you have more tha one div with class=a then you have to adapt the above if statement within an .each loop to iterate every element.

于 2012-09-24T22:55:12.437 回答
0

Why don't you use children.length in this case if you have nested elements

jQuery(function ($) {
        if ($('.a').children().length == 0){
            $(".a").html('<span class="b">0</span>');
        };
});

But this will only work if you have elements Inside.. if you are looking to check for the just text of div this approach will not work..

于 2012-09-24T22:56:14.507 回答