jQuery:带参数的非常奇怪的行为

时间:2012-05-07 09:09:09

标签: jquery if-statement arguments


[更新]我的不好..我没有正确查看代码..我应该发现这么小的错误..太遗憾了......我现在想删除这个问题,但无济于事......如果有人能帮我删除它会很棒。我不认为这样一个愚蠢的问题应该在这里。


我有这个功能:     功能魔法(a,b,c){

  $("#a").on("mouseover", "."+a, function() { 

    $("#a").css("background", b).css("left", c);
    alert(a); 

    if(a="a"){
         b = "b";
         c = "10%";
    }else{
         b = "a";
         c = "0%";
    }
    alert(b);
    alert(c);

    $("#a").animate({
         "top":c
    },{
         duration:2000,
         complete:function(){
         $("."+a).addClass(b).removeClass(a);
         }
    });
  });
}
        After I execute it twice with different arguments `onLoad`        
  magic("a","black","10px");
  magic("b","red","2px");

第一次 mouseover .a, 它应该 alert“a”,“b”然后是“10%”, * ,确实如此。 * 但是,第二次 mouseover以前是 - .a(现在是.b), 而不是alert“b”,“a”,“0%”, * 奇怪的是,alert“b”,然后是“b”,然后是“10%”。 * 我可以给出的结论是,在经历时      如果(α= “A”){                 b =“b”;                 c =“10%”;         }其他{                 b =“a”;                 c =“0%”;         } 对待a,因为它已被分配"a"而不是"b" 但那时它已经alert“b”.. (这是演示:http://jsfiddle.net/UqRdZ/ 如果有人能解释并提供解决方案,我将不胜感激。

4 个答案:

答案 0 :(得分:3)

比较运算符为==,而不是=

所以

if(a == "a"){ ...

答案 1 :(得分:0)

if(a = "a"){

不是

if(a == "a"){

- 前者将"a"分配给a,然后"返回" a作为表达式值,第二个进行比较并返回truefalse

答案 2 :(得分:0)

它不是非常奇怪的行为,您使用赋值运算符=而不是始终为==的比较运算符true

if(a == "a"){
     b = "b";
     c = "10%";
} else {
     b = "a";
     c = "0%";
}

答案 3 :(得分:0)

if(a = "a"){..}

应该是

if(a == "a"){...}

if(a === "a"){...}