Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 amout')并不总是像$('.iamin')_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript amout')并不总是像$('.iamin')

Javascript amout')并不总是像$('.iamin'),javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,并非所有浏览器都支持按类名选择(本机),但现代/更新的浏览器支持按类名选择,因此根据您使用的浏览器,它可能提供更好的性能 如果您需要获得最佳性能,则需要测试准确的页面。ID是唯一的,如果您只想在此处选择一个/第一个元素,则需要选择等效元素 $(“#someid”)=>75695次/秒,最快 $(.unique_class')=>45257次/秒,速度慢40%:页面上只有一个类 $(“.someclass”).first()=>42217次/秒,速度慢46%:页面上有多个类,选择第一个元素 $(“

并非所有浏览器都支持按类名选择(本机),但现代/更新的浏览器支持按类名选择,因此根据您使用的浏览器,它可能提供更好的性能


如果您需要获得最佳性能,则需要测试准确的页面。

ID是唯一的,如果您只想在此处选择一个/第一个元素,则需要选择等效元素

$(“#someid”)=>75695次/秒,最快

$(.unique_class')=>45257次/秒,速度慢40%:页面上只有一个类

$(“.someclass”).first()=>42217次/秒,速度慢46%:页面上有多个类,选择第一个元素

$(“.someclass:eq(0)”)=>18324次/秒,速度慢76%:页面上有多个类,在选定索引处选择元素


测试url:

我想这部分是正确的,但是按类选择也会映射到getElementsByClassName,对吗?实际上,
#id.class
语法没有帮助。如果希望获得任何性能优势,应该使用可选的上下文参数。是的,它映射到getElementsByClassName,但不在IE6-8中。Firefox、Opera、Safari和Chrome都支持它。这绝对是正确的答案,因为它利用了querySelectorAll()方法的用法,并且比$(“.someclass”,“#somecontainer”)快得多,不像大家相信的那样黑白分明:类和属性看起来不相上下。我很惊讶(并做出了假设)当我测试我的页面时,我发现一些选择结构的性能不如我实际页面上的其他结构。我现在测试更多:)我正要问同样的问题,你为我节省了一些时间。如果我希望该类中的每个元素,无论它位于何处,该怎么办?(更现实地说,
body
中的每一个这样的元素,但解决方案是向
body
?)添加一个ID),然后去掉上下文参数。我只是简单地提到它,因为我觉得它经常被遗忘。我还没有在主体上测试ID,但我认为这不会有多大帮助。事实上,我在一些复杂的页面中发现,一个div中的类假设并不总是最有效的。@Mark-Wow。你说得对。事情在几年内发生的变化令人惊讶。你可以在上面看到我的结果。@Steve Wortham:测试很好。现代浏览器有IE 8+、Chrome、Safari和Firefox。对于css来说,属性选择也很重要(因为有属性选择器),所以它也是优化的。
$("#someid")
$(".someclass")
$("[someattr='value']")
$("#someid .someclass")
$(".someclass", "#somecontainer")
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){

                startTime = new Date().getTime();               
                for (i = 0; i < 10000; i++)
                {
                    s = $(".someclass");
                }           
                $("#withoutcontext").html(elapsedMilliseconds(startTime));


                startTime = new Date().getTime();
                for (i = 0; i < 10000; i++)
                {
                    s = $(".someclass", "#somecontainer");
                }           
                $("#withcontext").html(elapsedMilliseconds(startTime));

            });

            function elapsedMilliseconds(startTime)
            {
                var n = new Date();
                var s = n.getTime();
                var diff = s - startTime;
                return diff;
            }
        </script>
    </head>
    <body>
        <h1>jQuery Selector Performance: Context vs No Context</h1>

        <h2>$(".someclass")</h2>
        <span id="withoutcontext">---</span> ms<br /><br />

        <h2>$(".someclass", "#somecontainer")</h2>
        <span id="withcontext">---</span> ms<br /><br />

        <hr />

        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <div id="somecontainer">
            <p class="a">a</p>
            <p class="b">b</p>
            <p class="c">c</p>
            <p class="someclass">someclass</p>
        </div>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
        <p class="a">a</p>
        <p class="b">b</p>
        <p class="c">c</p>
    </body>
</html>
<div id='iamout'>
  <div class='aonther'>
    <div class='iamin'>stuff</div>
    <div class='iamin'>stuff</div>
  </div>
</div>