2012-06-10 145 views
0

我處於困境中。我一直在試圖比較JavaScript中的兩個變量,然後如果匹配,則將一個類分配給父元素。但我在這方面沒有成功。我已經搜遍了所有可能的代碼並嘗試了它們,但無法使其工作。到目前爲止,我已經寫的代碼如下:在javascript中比較變量

$('div#encased a').click(function(){ 
     $('ul#filter .current').removeClass('current'); 
     var class_name = ($(this).parent().attr('class').replace('-',' ')); 
     var className = class_name.toString(); 
     alert(className); 
     $('ul#filter li').each(function(){ 
      /*1st version 
      var filterValue = $(this).text().toLowerCase(); 
      var filterValstr = filterValue.toString(); 
      alert(filterValstr); 
      if(filterValstr==className) 
      { 
       alert("match!") 
       $(this).parent().addClass('current'); 
      }*/ 

      /*2nd version*/ 
      if($(this).text().toLowerCase() == class_name) 
      { 
       $(this).parent().addClass('current'); 
      } 
      /*this works which according to me means it is not entering the if clause 
      else{ 
       $(this).parent().fadeOut('slow').addClass('hidden');  
      }*/ 
     }); 
    }); 

按我的知識的價值是不是如果命令裏面去,就好象我使用其他功能和工作的審判。我確信我正在做一些愚蠢的錯誤。我在這裏嘗試過兩種方法,我已經評論過一種,但是在這裏提供了兩種方法,以瞭解它們中的任何一種是否正確。

基本上點擊我的div中的圖像#被封裝的元素將拍攝圖像的類名,然後與上面的過濾器菜單中的文本進行比較。如果它匹配匹配的過濾器文本應該被分配當前的類。希望你能得到我想要解釋的東西。請幫忙。感謝

+1

'警報(類名);'和'警報(filterValstr);'輸出? – gdoron

+0

不應該將它與className而不是class_name進行比較嗎? –

+0

@UmairP。 'str.toString()== str'?! – gdoron

回答

1

你的代碼是不明確的,善良的意大利麪條之一,但也許你的問題是空格,儘量修剪,

var filterValue = $.trim($(this).text().toLowerCase()); 

而且你應該知道,string.toString()返回字符串...
實施例:

var str = "bla bla bla"; 
alert(str.toString === str); // true! 
+0

我也是這麼做的:trim + lowerCase –

+0

@ gion_13。我希望沒有輝煌的'.toString()'... :) – gdoron

+0

真棒傢伙..修剪工作...謝謝@ gdoron和所有誰投入。 – Gauts