2011-06-09 151 views
0

我的网页上有一个伪造的上下文菜单脚本。这个想法是,一个脚本会检查你所徘徊的元素是否具有某个类。如果是这样,它会将字符串变量设置为某个值。这样,当按下ctrl时,我可以检查字符串变量内容以确定哪个上下文菜单应该被隐藏。检查字符串变量是否为某个字符串值

var cmEl = ""; 

$('div').live('mouseover', function(e){ 
    e.stopPropagation(); 

    var actEl = $(this); 

    if (actEl.hasClass("B_Info")) { 
     var cmEl = "BiP"; 
    } else if (actEl.hasClass("BiO")) { 
     var cmEl = "BiO"; 
    } else if (actEl.hasClass("myOpt")) { 
     var cmEl = "myOpt"; 
    } else { 
     var cmEl = "GEN"; 
    } 
    $("#tell").html("" + cmEl + ""); 

}); 

$(document).keydown(function(e) { 
    if (e.ctrlKey) { 
     if (cmEl.match('BiP')) {   
      $("#Badge_C_M").removeClass("HIDE");    
      $(this).remove(); 
     } else if (cmEl === "BiO") {   
      $("#Opt_C_M").removeClass("HIDE");   
     } else if (cmEl === "myOpt") {  
      $("#Count_C_M").removeClass("HIDE");    
     } else { 
      $("#Gen_C_M").removeClass("HIDE");   
     } 
    } 
}); 

通过HTML读出,我可以看到,可变确实被设置为所需的值,但后者的一部分,其确定哪个菜单来显示,不能正常工作。

同样,我的第一个脚本只检查div,但我想要检查任何元素类型;或至少div和imgs。

回答

1

您正在重置函数作用域中cmEl的值。你需要重写只是像这样....

if (actEl.hasClass("B_Info")) { 
    cmEl = "BiP"; 
} else if (actEl.hasClass("BiO")) { 
    cmEl = "BiO"; 
} else if (actEl.hasClass("myOpt")) { 
    cmEl = "myOpt"; 
} else { 
    cmEl = "GEN"; 
} 

现在您的全局变量CMEL正在设置,从而可以在随后的.keydown函数读取。如果你想读不同的元素,你可以像这样绑定它们。

+0

哦,哎呀!错过了,复制/粘贴的危险...至于绑定,我知道逗号,但由于某种原因它不起作用。如果我这样做(div,img),它不会读取B_Info ...读取其余的查找。 – 2011-06-09 18:51:48

+0

Nvm,我想通了,重点是在IMG,它没有类,它的包装,所以我扔了一个.parent()英寸 – 2011-06-09 19:02:28

+0

Pesky逻辑错误:P – 2011-06-09 19:13:52

0

如果要选择所有元素,请使用$('*')。此外,在您的脚本中不要使用

var cmEL="..." 

每当您设定值时。 “Var”导致了这个问题。

相关问题