根据跨度文本值增加字体大小

时间:2013-08-26 15:25:43

标签: javascript jquery html css

我需要根据范围

中的值更改字体大小

班级名称中的数字并不总是相同

问题:使用text()我得到所有值(50020)

我需要在某处使用each()和$ this。怎么样?

感谢名单

<span class="emo_vote-1">50</span>
<p>smth.</p>
<span class="emo_vote-2">0</span>
<p>smth.</p>
<span class="emo_vote-3">20</span>

的jQuery

var voteNumberSpan = jQuery("span[class^=\"emo_vote\"]");
    var voteNumber = voteNumberSpan.text();
    //console.log(voteNumber);
    if (voteNumber <= 30) {
        voteNumberSpan.css("fontSize","10px")
    } else if(voteNumber == 50) {
        voteNumberSpan.css("fontSize","16px")
    } else  {
        voteNumberSpan.css("fontSize","24px")
    }
    //I tried also:
    //voteNumberSpan.each(function (i) {
        //var voteNumber = voteNumberSpan.text();   
        //if (voteNumber < 30) {
        //voteNumberSpan.css("fontSize","10px")
        //} else if(voteNumber == 50) {
        //voteNumberSpan.css("fontSize","16px")
        //} else  {
        //voteNumberSpan.css("fontSize","24px")
        //}
    //});

jsfiddle http://jsfiddle.net/lima_fil/5VTN4/2/

4 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/5VTN4/7/

    jQuery(document).ready(function(){

    jQuery("span[class^=\"emo_vote\"]").each(function(){
        var voteNumber = $(this).text();
    console.log(voteNumber);
    if (voteNumber <= 30) {
        $(this).css("fontSize","10px")
    } else if(voteNumber == 50) {
        $(this).css("fontSize","16px")
    } else  {
        $(this).css("fontSize","24px")
    }
    });
});

答案 1 :(得分:1)

试试这个小提琴:http://jsfiddle.net/5VTN4/5/

它使用每种方法并使用tekst值作为大小:

 jQuery(document).ready(function(){
     $("span[class^=\"emo_vote\"]").each(function(){
        alert($(this).text());
        $(this).css("fontSize", $(this).text() + "px")
     });
});

答案 2 :(得分:0)

因为您有三个不同的类名,无论出于何种原因,我建议您添加一个通用的类名来关联所有相关的span元素,然后选择那个(因为如果以emo_vote开头的类名不首先出现在类列表中,那么使用attribute-starts-with选择器很容易失败,那就说我建议使用以下jQuery:< / p>

jQuery('span.emo-vote').css('font-size', function(){
    var s = parseInt($(this).text(), 10);
    if (s <= 30) {
        return '10px';
    }
    else if (s > 30 && s <= 50) {
        return '16px';
    }
    else {
        return '24px';
    }
});

加上以下HTML:

<span class="emo_vote-1 emo-vote">50</span>
<p>smth.</p>
<span class="emo_vote-2 emo-vote">0</span>
<p>smth.</p>
<span class="emo_vote-3 emo-vote">20</span>

JS Fiddle demo

顺便说一下,没有必要使用each()css()(正如我上面所示)采用一个匿名函数,该函数将迭代选择器返回的每个元素(其中$(this) 1}}将与运行迭代的当前元素相关。)

参考文献:

答案 3 :(得分:0)

尝试这种方式:

  1. 定义字体大小范围:从10px到24px。
  2. 设定每个范围的费率。

    <span class="emo_vote-1" data-i2="fontSize:[10,24],key:'k',rate:50" >50</span>
    <p>smth.</p>
    <span class="emo_vote-2" data-i2="key:'k',rate:0" >0</span>
    <p>smth.</p>
    <span class="emo_vote-3" data-i2="key:'k',rate:20">20</span>
    
  3. 请参阅demo