2009-04-13 34 views
79

例如,下面選擇的分割使用id = 「2」:如何在ID中使用變量來選擇jQuery中的元素?

row = $("body").find("#2"); 

我怎樣做這樣的事情:

row_id = 5; 
row = $("body").find(row_id); 

上述語法產生錯誤。我檢查了jQuery文檔,並在這裏回答沒有成功。

+6

哇,五個答案完全一樣...... – Zifre 2009-04-13 14:48:02

回答

150
row = $("body").find('#' + row_id); 

更重要的是做額外的body.find對性能沒有影響。要做到這一點,正確的方法很簡單:

row = $('#' + row_id); 
+0

就是這樣!謝謝! – Tony 2009-04-13 14:25:24

0

我不知道很多有關jQuery的,但試試這個:

row_id = "#5"; 
row = $("body").find(row_id); 

編輯:當然,如果變量是一個數字,你必須添加"#"到前面:

row_id = 5 
row = $("body").find("#"+row_id); 
5

你可以這樣說:

row_id = 5; 
row = $("body").find('#'+row_id); 
1

有兩個問題與您的代碼

  1. 要找到一個元素的ID,必須以「#」
  2. 您正在嘗試前綴它通過一個號碼時,需要一個字符串查找功能(通過「#」 + 5可以解決這個問題,因爲這將5轉換爲「5」的第一)
37

最短的方法是:

$("#" + row_id) 

將搜索限制在身體上沒有任何好處。

此外,您應該考慮將您的id s重命名爲更有意義的內容(並且根據Paolo的答案符合HTML標準),尤其是如果您還需要命名另一組數據。

+0

好點 - 感謝澄清這一點。 – Tony 2009-04-13 15:04:00

+0

我喜歡簡潔。我只是用qTip2工具提示來使用它,效果很好。我有點好奇,爲了響應用戶輸入而產生大量「及時」性能損失。 – 2017-11-22 19:04:35

26

按ID查找時不需要做$('body').find();;沒有性能收益。

還請注意,具有以數字開頭的ID not valid HTML

ID和名稱標記必須以字母開頭([A-ZA-Z])和之後可以是任何數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」),冒號(「:」)和句點(「。」)。

相關問題