2013-04-30 54 views
3

我可能俯瞰一個更明顯的方式做我想做的元素的ID,但是......jQuery的 - 選擇一個變量基於該被點擊

我有JS變量與名稱的列表這與我的網頁上某些元素的ID相同。當我點擊某個elmeents時,我希望能夠使用clicked元素的ID來確定應該在我的函數中使用哪個變量。我的變量名稱對應於我的元素ID - 必須有一些方法可以使用$(this).id獲取單擊的元素ID的值,然後找到與該字符串匹配的變量?要明確,變量的內容與變量名或元素ID完全不相關 - 變量在頁面加載時設置,我希望避免每次運行函數時都設置它們!而且我知道我可以使用onclick來做這件事,但我試圖避免這種情況,因爲顯然它現在很低級?!

謝謝!

+0

你將這個「列表」存儲爲一個「對象」,以便你可以按鍵查找值?嘗試顯示一些代碼。 – Mathletics 2013-04-30 01:30:34

回答

2

我建議你做一個數組與人的IDS名

thisArray = { 
    uniqueID1: 'Your value for uniqueID1', 
    uniqueID2: 'Your value for uniqueID2' 
}; 

,你可以調用一個類的元素,例如

HTML:

<div id="uniqueID1" class="elements_class"> Div Content </div> 
<div id="uniqueID2" class="elements_class"> Div Content </div> 

的jQuery:

$('div.elements_class').click(function(){ 
    var now_id = $(this).attr('id'); 
    alert(thisArray[now_id]); 
}); 
+0

['Array's](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array)不應該有索引名... – 2013-04-30 01:39:58

+0

@Derek朕會功夫爲什麼?它不工作或...? – Memolition 2013-04-30 01:40:59

+1

http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/使用對象而不是數組。 – 2013-04-30 01:42:07

0

如果您使用對象來存儲您正在使用鍵/值對進行交談的變量,則可以撥打variableObject[this.id]來獲取該變量。

0

你想過把它們存儲在一個對象中嗎?

例子:

var obj = { 
    'id1' : value1, 
    'id2' : value 2, 
    //... 
} 

然後你就可以存取權限他們像

obj[this.id] 
+0

'$(this).attr('id')'基本上是'this.id' :) – 2013-04-30 01:33:40

+0

可靠,從來沒有用過它。感謝信息,更新我的答案! – 2013-04-30 01:34:24

1

好像你想要的是使用.data()

$(el).data('myobject', { 
    x: 123, 
    y: 456 
}); 

然後檢索:

$(el).on('click', function() { 
    var obj = $(this).data('myobject'); 
});