2012-06-10 71 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