Проверьте, является ли строковая переменная определенным строковым значением - PullRequest
0 голосов
/ 09 июня 2011

У меня есть скрипт контекстного меню psuedo на моей веб-странице. Идея состоит в том, что скрипт проверит, имеет ли элемент, над которым вы наводите курсор, определенный класс. Если это так, он устанавливает строковую переменную в определенное значение. Таким образом, при нажатии 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, но я бы хотел, чтобы он проверял любой тип элемента; или хотя бы divs и imgs.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Вы сбрасываете значение 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... });

надеюсь, это поможет.

0 голосов
/ 09 июня 2011

Если вы хотите выбрать все элементы, используйте $ ('*'). Также в вашем скрипте не используйте

var cmEL="..."

каждый раз, когда вы присваиваете значение. «Вар» вызывает проблему.

...