在jQuery/Javascript中将id值与事件值映射

在jQuery/Javascript中将id值与事件值映射,javascript,jquery,events,map,Javascript,Jquery,Events,Map,我是javascript/jQuery新手,我正试图找到一种最智能的方式,根据id是否处于活动状态来触发事件: <ul class="tabs"> <li id="1" class="active"><a href="#"></a></li> <li id="2"><a href="#"></a></li> <li id="3"><a href="#"></a

我是javascript/jQuery新手,我正试图找到一种最智能的方式,根据id是否处于活动状态来触发事件:

<ul class="tabs">
<li id="1" class="active"><a href="#"></a></li>
<li id="2"><a href="#"></a></li>
<li id="3"><a href="#"></a></li>
<li id="4"><a href="#"></a></li>
</ul>
这变得有点困难,因为规则如下:

如果id=1处于活动状态,则id=2时触发警报(“A”)处于活动触发状态 id=3时的警报(“B”)为激活状态,id=4时的触发警报(“C”)为激活状态 触发警报(“D”)

我可以使用什么函数将1与A、2与B等映射

谢谢

var functionsMap = {
    "id1": function() { ... },
    "id2": function() { ... },
    ...
};

$('.tabs li').on('click', function() {
    var id = $(this).attr('id');
    functionsMap[id]();
});
当然,为具有这样id的元素添加检查函数,等等。

试试这个

var call_arr = ['a', 'b', 'c', 'd'];

$('click a random button').click(function(){
    var ind = $('li.active').index();
    alert(call_arr[ind]); 
});
var data = ['a', 'b', 'c', 'd'];

$('.tabs li').click(function(){
    alert(data[$(this).index()].toUpperCase()); 
});

1.不要将数字用作id您可以在
li
中添加一个
单击
侦听器,调用一个方法,在该方法中,如果id具有类,则给出一个警报语句良好的提示,但我更关心如何映射值:1与a、2与B等。这很好,但是有不同的按钮使li处于活动状态。这可以独立于单击事件吗?@user2441947您可以将其封装在函数中并调用该函数。谢谢,但这里的关键是li处于活动状态,而不是“单击”。我们可以让它独立于点击事件吗?当然可以,只需运行这样的代码:functionsMap[$('.tabs.active').attr('id'))()很好,谢谢!最后一个愚蠢的问题是:当您编写
“id1”:function(){…},
,应该用什么替换
?应该有您想要的任何逻辑。例如,第一个函数为警报('A'),第二个函数为警报('B'),第三个函数为动画,等等。