2013-05-31 12 views
0

事件值映射ID值,我是新來的JavaScript/jQuery和我試圖找到觸發根據ID是否處於活動狀態的事件的最聰明的辦法:與jQuery的/ JavaScript的

<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被激活,觸發警報( 「A」),當ID = 2被激活觸發 警報( 「B」),如果如果id = 4激活,則id = 3是激活觸發警報(「C」) 觸發警報(「D」)

我可以用什麼函數來映射1與A,2與B等?

謝謝!

+0

1.Don't使用號碼作爲ID。 –

+0

您可以添加一個'click'監聽到你的'li's,調用的方法和在該方法中,如果ID有一個類,給予警告聲明 –

+0

不錯的提示,但我更關心如何映射值:1與A,2與B等 – user2441947

回答

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

$('.tabs li').on('click', function() { 
    var id = $(this).attr('id'); 
    functionsMap[id](); 
}); 

當然加檢查,如果存在這樣的id元素等功能...

+0

謝謝,但這裏的關鍵是李活躍,而不是「點擊」。我們可以使它獨立於點擊事件嗎? – user2441947

+0

當然你可以運行這樣的代碼:functionMap [$('.tab .active')。attr('id')]() –

+0

非常感謝!最後一個愚蠢的問題是:當你寫''id1「:function(){...},',應該用什麼替換? – user2441947

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

$('click a random button').click(function(){ 
    var ind = $('li.active').index(); 
    alert(call_arr[ind]); 
}); 
+0

這很好,但是有不同的按鈕可以讓li激活。這可以獨立於點擊事件嗎? – user2441947

+0

@ user2441947你可以將它包裝在一個函數中並調用該函數。 – Spokey

+0

有道理!謝謝。 – user2441947

0

試試這個。

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

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

感謝Ramaraj,和Spokey一樣好,但......同樣的問題! :) – user2441947