2010-06-14 48 views
0

我覺得這是一個簡單的問題,但對於javascript和jquery我還是比較新的。從jquery中選擇基於元素ID的javascript變量

我正在開發一個觸摸界面的網站,使用無序列表和jquery .click函數來獲取輸入數據。我有一個部分輸入一個m:ss時間,其中包含3個div,每個時間包含一個數字列表。我需要獲取每列的輸入並將其設置爲一個變量。我原本設計的輸入來改變表單輸入,因爲我不太瞭解JavaScript。使用div id可以很容易地改變3個隱藏的輸入,但我現在無法弄清楚如何用javascript變量來完成它。

這是我原來的jQuery代碼...

$("div#time>div>ul>li").click(function() { 
    var id = $(this).parents(".time").attr("name"); 
    var number = $(this).html(); 
    $("input#"+id).val(number); }); 

最後一行設置的3個隱藏輸入等於被點擊的任何一個。我需要使得獨立變量接受輸入,然後我可以操縱那些變量。

下面是html的一小段代碼,以瞭解jQuery如何抓取它。

<div id="time"> 
    <h1>Time</h1> 
    <div name="minute" class="time" id="t_minute"> 
    M : 
    <ul> 

全職HTML是在這裏:link text

謝謝大家!

我一直在用它來回答很多問題,但是我找不到這個東西,所以我想我會加入,因爲我確信我會一直有更多的問題。

所以我嘗試添加以下內容,但仍然無法正常工作。

window.myValues[id] = number; 
event[i].min = myValues["minute"]; 
event[i].sec = myValues["second"]; 
event[i].sin = myValues["single"]; 
event[i].time = String(event[i].min) + String(event[i].sec) + String(event[i].sin); 

我試過了,無論是否帶引號。我沒有用過窗口*,因此我不太清楚如何處理這個問題。

回答

2

這裏首先要說的是,不要沒必要具體。在你的例子中

$('#time').find('li').click() 

應該就夠了。 如果我很瞭解你,你想存儲一些數據。您可能想要使用 jQuery的$.data方法。例如:

$('#time').find('li').click(function(){ 
    var $this = $(this); 
    var name = $this.closest('.time').attr('name'); 
    $.data(document.body, name, $this.html()); 
}); 

這將存儲在一個全局對象的點擊裏,它可以像

alert($.data(document.body, 'minute')); 
+0

謝謝!我添加了一些代碼到原來的帖子。這工作,並得到了我想要的數據。另外,我從來沒有見過.find或.closest,但他們會幫助很多!我知道我需要簡化我的選擇器(還有其他類似的東西),但是我在完成所有工作之後就已經計劃完成了。這兩件事會幫助我很多。這個答案很完美,非常感謝。 – 2010-06-14 07:20:30

+0

@phoffer:upvote jAndy的回答也給了他看法:) – 2010-06-14 07:22:33

0

你應該能夠引用window []對象的變量,所以像window [id]這樣的東西應該能夠引用變量。

+0

我沒有用於任何窗口訪問的HTML,所以我真的不知道如何處理你的建議,儘管我認爲你幫助了浮沉主義者思考一些事情。如果你想看 – 2010-06-14 07:03:30