2011-09-30 22 views
7

我正在使用此选择器 $("textarea #myTextArea").val(text);并且它不起作用。如果我删除ID并使用它正在工作的类。为什么jquery不能在这里找到元素?如何使用具有元素类型和ID的jquery选择器

+4

仅供参考,只是ID在jQuery的优化 - 你将趋缓选择相当 –

+0

丹尼尔是正确的,你应该只使用$(“myTextArea”),而不是你的选择。它直接使用javascript的getElementById(),所以它快速高效。在使用选择器时,脚本将选择所有元素(在本例中为textareas)并遍历它们直到找到合适的元素。 – Przemek

+0

是的,但我不能这样做,因为同一个ID被用于其他地方,在同一个页面中,我知道这很糟糕,但我必须忍受这一点。 – Manoj

回答

26

由于空间。用空格表示#myTextAreatextarea之内。

$("textarea#myTextArea").val(text); 
+1

“textarea”不仅仅是多余的。它大约慢了80%。在这里,我创建了一个测试:http://jsperf.com/jquery-selector-performance-test123 – Alex

4

只需删除空间:

$("textarea#myTextArea").val(text); 

此刻你要选择具有ID myTextArea的元素是的后代元素的textarea

由于贾里德Farrish提到在评论中移除元素类型会更高效:

$("#myTextArea").val(text); 

如果您的文档是有效的,那么每个ID只会使用一次这仍然是正确的。

+0

或者删除'textarea'。 –

+3

为了澄清@Manoj,当你使用一个空格时,它会尝试选择id为myTextArea的元素,它们是你textarea的* descendants *。 – Kasaku

+0

@PirateKitten +1我编辑了答案,以反映 – Clive

相关问题