Jquery Javascript сделать оператор if в случае case не работает - PullRequest
2 голосов
/ 05 мая 2011

Я использую Jquery. Это if-утверждение работает:

if ($(this).siblings(".numOfMatchedKeywords").text() == 1) {
                    $(this).siblings(".numOfMatchedKeywords").css({'color':'#0099ff'})
               }

Но когда я попытался превратить его в коммутатор, я не смог заставить его работать:

var numWord = $(this).siblings(".numOfMatchedKeywords").text();
                switch (numWord){
                    case 1: 
                        numWord.css({'color':'#0099ff'})
                    break;
                    case 2: 
                        numWord.css({'color':'#33cc33'})
                    break;
                    case 3: 
                        numWord.css({'color':'#ff0099'})
                    break;
                }

что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 05 мая 2011

use parseInt()

parseInt($(this).siblings(".numOfMatchedKeywords").text(), 10);

Кроме того, numWord является текстом, а не объектом jQuery.

var numWord = parseInt($(this).siblings(".numOfMatchedKeywords").text(), 10);
var $sib =$(this).siblings(".numOfMatchedKeywords");
switch (numWord) {
case 1:
    $sib.css({
        'color': '#0099ff'
    })
    break;
case 2:
    $sib.css({
        'color': '#33cc33'
    })
    break;
case 3:
    $sib.css({
        'color': '#ff0099'
    })
    break;
}
2 голосов
/ 05 мая 2011

Компактная версия:

var numWord = parseInt($(this).siblings(".numOfMatchedKeywords").text());
var colors = ['', '#0099ff', '#33cc33', '#ff0099'];
$(this).siblings(".numOfMatchedKeywords").css('color', colors[numWord]);
0 голосов
/ 05 мая 2011

Я предполагаю, что оператор if выполняет некоторое автоматическое преобразование для .text () и 1 и приравнивает строку и целое число, тогда как оператор switch делает эквивалент ===.Не гарантируя, что выше, но я бы порекомендовал попробовать: 'case "1": instead of case 1: `

Кроме того, вы применяете свой CSS к numWord, который вы установили равным текстуэлемента, а не сам элемент.

...