2010-02-12 48 views
3

出於某種原因,這個工程:如何將變量傳遞給jQuery查詢?

var oldText = $("#tayke li:eq(" + theIndex + ")").text(); 

但這並不:

var tayke_li = "#tayke li:eq(" + theIndex + ")" 
var oldTest = $(tayke_li).text(); 

注:theIndex是一個整數。

+2

你';第2行之前'錯過或者這只是一個錯字? – Darmen 2010-02-12 13:19:35

+2

與第一個比較的另一個錯字是oldText變成了oldTest(* x - > s *)。如果你警告,看看它是否有效,它會失敗.. – 2010-02-12 13:22:28

+1

當你說它不起作用,它只是沒有選擇你想要的或是代碼拋出一個錯誤? – 2010-02-12 13:26:01

回答

0

這有什麼區別,如果你把分號在隨後行的結尾:

var tayke_li = "#tayke li:eq(" + theIndex + ")"; //<--- 

我已經建立了一個簡單的例子,它工作正常:

alert($("#tab1").length); 
var s = "#tab" + String(1); //alerts "1" 
alert(s); //alerts "#tab1" 
alert($(s).length); //alerts 1 

此外,使用String()嘗試將theIndex明確地轉換爲字符串。您是否仔細檢查了存儲的內容tayke_li

是否需要使用分號?

Do you recommend using semicolons after every statement in JavaScript?

What is the consequence of this bit of javascript?

Should I use semicolons in JavaScript?

http://www.webmasterworld.com/forum91/521.htm

+0

啊,只是一個錯字。 – Phil 2010-02-12 13:18:12

+0

剛剛試過 var tayke_li =「#tayke li:eq(」+ String(theIndex)+「)」; no luck – Phil 2010-02-12 13:20:49

+0

嘗試'var tayke_li =「#tayke li:eq(」+ theIndex.toString()+「)」' – Darmen 2010-02-12 13:22:28

1

這兩種方式都可以。我重做了它,它工作。 檢查變量和範圍的索引變量。嘗試將其替換爲硬編碼1

將jQuery版本信息添加到問題中,並且瀏覽器規範也不錯。

+0

oldText!= oldTest是唯一的解釋,爲什麼這不應該工作恕我直言;)但這不是我作爲答案。 – naugtur 2010-02-12 13:33:18

0

嘗試

var oldText = $("#tayke li:eq("+parseInt(theIndex)+")").text(); 

var oldText = $("#tayke li").eq(theIndex).text();