使用ID号进行jquery mouseover和mouseout

时间:2014-10-30 09:17:15

标签: jquery

我写了一个代码,它完美无缺。我多次使用变量(var num = this.id.match(/ \ d + /);)并且需要知道如何将它放入函数中并在我的代码中调用此函数。

     $('#nav-menu1, #nav-menu2, #nav-menu3, .filter-menu').hide();

   $(".mainbutton").mouseover(function() {

    var num = this.id.match(/\d+/);

    if (!$("#nav-menu" + num).hasClass('active')) {
        $("#nav-menu" + num).stop().slideDown();
        $("#nav-menu" + num).addClass('active');
    }

}).mouseleave(function() {

    var num = this.id.match(/\d+/);

    $("#nav-menu" + num).removeClass('active');
    $("#nav-menu" + num).slideUp("fast");
});

$('.nav-menu').mouseover(function() {

    var num = this.id.match(/\d+/);
    $("#mainButton" + num).addClass('altbg');
    $(this).stop();

}).mouseleave(function() {

    var num = this.id.match(/\d+/);
    $("#mainButton" + num).removeClass('altbg');
    $(this).slideUp("fast");

}).click(function() {

    var num = this.id.match(/\d+/);
    $(this).slideUp("fast");
    $("#mainButton" + num).removeClass('altbg');

});

1 个答案:

答案 0 :(得分:1)

.match()返回一个数组。整个正则表达式的匹配是数组的第一个元素,捕获组的匹配是剩余的元素。所以你需要下标它以获得你想要的匹配:

var num = this.id.match(/\d+/)[0];

您可以在函数中执行此操作:

function get_id_num(elem) {
    return elem.id.match(/\d+/)[0];
}

然后你的所有事件处理程序都可以:

var num = get_id_num(this);