Javascript 改进低效的jQuery选择器
在IntelliJ中,如果使用jQuery选择器,如:Javascript 改进低效的jQuery选择器,javascript,jquery,intellij-idea,Javascript,Jquery,Intellij Idea,在IntelliJ中,如果使用jQuery选择器,如: $('#roleField option').each(function() { // impl omitted }); 选择器突出显示,并建议我 以ID选择器开头的拆分子代选择器 IntelliJ到底建议我用什么替换上面的选择器?尝试使用.find()此处: $('#roleField').find('option').each(function() { // impl omitted }); 您的警告似乎与选择器的效
$('#roleField option').each(function() {
// impl omitted
});
选择器突出显示,并建议我
以ID选择器开头的拆分子代选择器
IntelliJ到底建议我用什么替换上面的选择器?尝试使用.find()
此处:
$('#roleField').find('option').each(function() {
// impl omitted
});
您的警告似乎与选择器的效率有关
从jquery文档中可以看出,此方法不会通过Sizzle扇区引擎:
$('#roleField option').each(function() {
// No Sizzle
});
在这一点上:
$('#roleField').find('option') // Sizzle!
查看ID基选择器部分。因此,第二种方法将比第一种更快。我认为
$('#roleField')。find('option')
不确定它是否指的是什么,但使用find作为子选择器已经被证明是相当快的-$('#roleField')。find('option')。每个()的可能重复似乎都是一个愚蠢的警告。虽然使用.find可能会将速度提高几毫秒,但在易读性方面不值得牺牲。我个人(已经专业地使用jQuery 6年了)不使用.find
,除非它位于指定的变量上。如果我有一个选择器
,就像你上面展示的那样,我只需要做你正在做的事情,$(“#id child”)
。确实没有理由用$('#id')替换它。查找('child')
我认为,因为如果您单独使用id选择器,那么jQuery可能会使用getElementById()
来获取第一条记录……您发布的评论和链接中已经给出了答案。您不应该将链接作为答案发布-您应该使用“关闭”按钮。@Archer是的,但他提供了一个实际的答案。尽管如此,在你告诉人们它“相当”快之前,请发表一些证据。多年来,我一直在使用子选择器和保存。查找仅用于变量,从未见过任何“显著”差异。换句话说,我从来没有想过它会快得多,在我的早期我尝试过两种方法。@Archer评论就是评论,答案就是答案,这是IntelliJ
而不是PHPStorm
,我也不会发布链接作为答案。您提供的链接显示了与您建议的代码更改完全相同的问题。你应该用链接向OP指出这一点。