我写了一个代码,它完美无缺。我多次使用变量(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');
});
答案 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);