Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 改进低效的jQuery选择器_Javascript_Jquery_Intellij Idea - Fatal编程技术网

Javascript 改进低效的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 }); 您的警告似乎与选择器的效

在IntelliJ中,如果使用jQuery选择器,如:

$('#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指出这一点。