检查String Variable是否为某个字符串值

时间:2011-06-09 17:21:54

标签: jquery contextmenu keydown

我的网页上有一个伪上下文菜单脚本。我们的想法是,脚本将检查您正在悬停的元素是否具有某个类。如果是,则将字符串变量设置为某个值。这样,当按下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。

2 个答案:

答案 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”导致了这个问题。