2012-07-02 34 views
0

我將如何能夠把它寫讓新手那麼它的一個顏色,如果跨度說,俱樂部的工作人員則有另一種顏色?如果跨度說jQuery的,如果每個人都有價值,然後

<span class="usertitle">Newbie</span> 
<span class="usertitle">Club Staff</span>​ 
+2

你嘗試過什麼?你在哪裏遇到麻煩? (你爲什麼給你的兒子基弗命名?;-)) –

+0

如果你可以控制輸出,爲什麼不在你的CSS中爲每個值創建類,並且將相應的類添加到一個值中?我認爲它比試圖用JavaScript來破解這個要好得多。 – Styxxy

回答

1

JS區分大小寫

$('span.usertitle:contains('Newbie')').addClass('newbieColor'); 
$('span.usertitle:contains('Club Staff')').addClass('clubStaffColor'); 

Demo

JS不區分大小寫

$('span.usertitle').html(function() { 
    var text = $(this).text().toLowerCase(); 
    if(text === 'newbie') { 
     $(this).addClass('newbieColor'); 
    } else if(text === 'club staff') { 
     $(this).addClass('clubStaffColor'); 
    } 
}); 

Demo

CSS

.newbieColor { 
    color: yellow; 
} 

.clubStaffColor { 
    color: red 
} 
1

你可以嘗試:contains選擇:

$(".usertitle:contains('Newbie')") 

each方法:

$(".usertitle").each(function(){ 
if ($.trim($(this).text()) == 'Newbie') { 
    // $(this).css('color', 'blue') 
} 
}) 
0
$('.usertitle').each(function(){ 
    var text = $.trim($(this).text()); 
    if(text == "Newbie"){ 
    // one color 
    } 
    else if(text == "Club Staff"){ 
    // another color 
    } 
}); 
+1

1.'text'是一個函數,而不是一個屬性。 2. ***非常微妙(請參閱Jorge早期回答中的註釋) –

+0

現在您不斷調用'$()'和'text()'。爲什麼一遍又一遍?不必要的工作。再次:2. ***非常微妙(請參閱Jorge早些時候的回答)。 –

+0

Jorge刪除了他的答案:您的代碼不會與發佈的標記一起使用,因爲字符串不匹配。 –

1
$(document).ready(function() { 
    $('.usertitle').each(function() { 
     if ($(this).html() == "Newbie") $(this).css("color","blue"); 
     else if ($(this).html() == "Club Staff") $(this).css("color", "red"); 
    }); 
}); 

http://jsfiddle.net/TgFfm/

+0

您的小提琴只能用,因爲您的標記與OP的不完全相同。 (OP的標記將具有稍微不同的文本節點。) –

+1

好吧,現在OP已經改變了他的標記,所以這個工作。 :-) –

1

如果你真的想從內容工作:

$(".usertitle").each(function() { 
    var $this = $(this); 
    var color; 
    switch ($.trim($this.text())) { 
     case "Newbie": 
      color = "green"; // For instance 
      break; 
     case "Club Staff": 
      color = "red"; // For instance 
      break; 
    } 
    if (color) { 
     $this.css("color", color); 
    } 
}); 

注意使用$.trim,這是奇怪的是從其他的答案缺少在這裏,因爲你的標記可能包括對詞語的兩側空白你的跨度。您在編輯中更新的標記不會。但我仍然使用$.trim,因爲它不會花費太多,並且使事情變得更加脆弱。

(或者,當然,而不是css,使用addClass這樣你就可以控制通過樣式呈現。)

但我真的試圖找到一種方法,從比,如果你的內容以外的東西的工作可能可以。

或者更緊湊,並聲明:

var colors = { 
    "Newbie":  "green", 
    "Club Staff": "red" 
}; 

$(".usertitle").each(function() { 
    var $this = $(this); 
    var color = colors[$.trim($this.text())]; 
    if (color) { 
     $this.css("color", color); 
    } 
}); 

再或者,而不是css,使用classes表,而不是一個colors表並使用addClass,這樣你就可以控制通過樣式呈現,如:

var classes = { 
    "Newbie":  "newbie", 
    "Club Staff": "club-staff" 
}; 

$(".usertitle").each(function() { 
    var $this = $(this); 
    var cls = classes[$.trim($this.text())]; 
    if (cls) { 
     $this.addClass(cls); 
    } 
}); 
1

我會使用CSS類和addClass()

$('.usertitle').each(function(){ 
    var t = $(this), 
     text = $.trim(t.text()) 
    t.addClass(
    text === 'Newbie' && 'green' || 
    text === 'Club Staff' && 'red' || 
    !text && 'default' 
) 
})