2014-10-30 28 views
0

我寫了一個代碼,其完美的作品。我已經多次使用變量(var num = this.id.match(/ \ d + /);),並且需要知道如何將它放入函數並在我的代碼中調用此函數。jQuery的鼠標懸停和鼠標使用I​​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

.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); 
+0

感謝期待你的答覆。我需要知道如何只聲明一次這個變量並多次調用這個變量。請參閱我使用var num多次。 – user2787623 2014-10-30 09:29:57

+0

你不能申報一次。它必須在每個事件處理程序中設置。 – Barmar 2014-10-30 09:30:36

+0

我已經展示瞭如何將它放入函數中。 – Barmar 2014-10-30 09:32:06