我的网页上有一个伪上下文菜单脚本。我们的想法是,脚本将检查您正在悬停的元素是否具有某个类。如果是,则将字符串变量设置为某个值。这样,当按下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。
答案 0 :(得分: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函数中读取。如果你想阅读不同的元素,你可以像这样绑定它们....
$('div, img, input').mouseover(function(e){ ...code... });
希望这会有所帮助。
答案 1 :(得分:0)
如果要选择所有元素,请使用$('*')。您的脚本中也不要使用
var cmEL="..."
每当你签署价值时。 “Var”导致了这个问题。