Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove   from the end of spans with a given class?

I need to remove the   after the value of given spans.
The HTML looks like this:

<span class="number">0.15&nbsp;</span>

The &nbsp; is coming from the server (CMS).

Is there any way to remove the &nbsp; by using CSS rules?

like image 796
ezhil Avatar asked Aug 05 '14 06:08

ezhil


4 Answers

You can't do this with only css. Somehow you have to use jquery for this. With Regular Expression you can simply do this.

var span = $('span').html();
span = span.replace(/&nbsp;/g, '');
$('span').html(span);

DEMO

Note: &nbsp; is coming from CMS them you have to use jquery code to replace it when your document loaded fully.

$(document).ready(function(){
    var span = $('span').html();
    span = span.replace(/&nbsp;/g, '');
    $('span').html(span);
});
like image 190
Manwal Avatar answered Oct 12 '22 04:10

Manwal


If this value is provided by your CMS, it's posible you can modify the value with php via str_replace('&nbsp;', '', $yourVar) before echo it in your span.

If you can't access with this, you can also use jQuery to do this... Just like Muhammad Ali said:

var str = $('.number').html();
str = str.replace('&nbsp;', '');
$('.number').html(str);

Something like this could work. But with CSS, isn't posible I guess.

like image 29
Bardyl Avatar answered Oct 12 '22 04:10

Bardyl


You cannot possibly remove characters from document content with CSS. That’s not what CSS is for. You can add characters to be rendered, with generated content, but not remove.

However, you might be able to undo the effects of a character on rendering. Consider the following example:

<span class="number">0.15&nbsp;</span>foo

The no-break space (&nbsp;) has two effects: it causes visible spacing, the same as a normal space character, and it prevents line break between “0.15” and “foo” when the browser formats the text. To prevent the latter effect, you could add a normal space using generated content, but then there will be too much spacing when a line break does not appear. To fix this, set the width of the pseudo-element to zero:

.number:after { content: " "; display: inline-block; width: 0; }

To remove the spacing effect of the no-break space, you can set a negative right margin. The main problem with this is that the width of a no-break space (and a space) depends on the font. It is on the average about one fourth of an em, but it may vary considerably. If you can regard the font as fixed (e.g., you are using @font-face), you can use the following code, with just the numeric value tuned as needed:

 .number {  display: inline-block; margin-right: -0.25em; }

As a side effect, this may also allow a line break between “0.15” and “foo”, since browsers may handle inline blocks in formatting so that they always allow line breaks before and after.

like image 45
Jukka K. Korpela Avatar answered Oct 12 '22 02:10

Jukka K. Korpela


you can use javascript/Jquery framework to remove any charackey like this exampe Here

var span = $('span').html();
span = span.replace('&nbsp;','');
$('span').html(span);
like image 1
Muhammad Ali Avatar answered Oct 12 '22 02:10

Muhammad Ali