0

我需要根据跨度中的值更改字体大小

类名中的数字并不总是相同

问题:使用 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

4 回答 4

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")
    }
    });
});
于 2013-08-26T15:30:33.653 回答
1

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

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

 jQuery(document).ready(function(){
     $("span[class^=\"emo_vote\"]").each(function(){
        alert($(this).text());
        $(this).css("fontSize", $(this).text() + "px")
     });
});
于 2013-08-26T15:30:54.423 回答
0

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

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 小提琴演示

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

参考:

于 2013-08-26T15:39:56.183 回答
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>
    

演示

于 2013-12-15T18:26:26.033 回答