http://jsperf.com/jquery-eq-method-v...udo-selector/6
WorM32, он правильный с точки зрения логики и абстракции. То что он работает медленнее - вопрос реализации в jquery. |
Цитата:
|
Sweet,
Нет. Если смотреть абстрактно: $("div.b").eq(1) - взять все элементы с классом "div.b", вернуть второй из них. $("div.b:eq(1)") - взять элемент имеющий класс "div.b" и идущий вторым. Соответственно второе должно выполнятся как минимум не медленнее первого. Почему же реальность так несовершенна - вопрос к авторам jq.) |
Цитата:
Цитата:
А вот с точки зрения браузера, если бы это был нативный селектор, ваше определение в корне неправильное. Определение в таком случае должно было быть такое: "Выбрать все элементы идущие вторыми. Из этих элементов выбрать с классом b и тегом div". |
Мде. А ничего что мы работаем с абстракциями? Внутренняя кухня должна оптимизироваться и подстраиваться под логику человека, а никак не наоборот. Выбор одного элемента должен быть быстрее выбора всех. Как это достигается - меня не волнует.
|
Цитата:
Цитата:
Посоны, вы просто холиварите. Это одно и тоже: $("div.b").eq(1) $("div.b:eq(1)") $("div.b").find(":eq(1)") $(":eq(1)", "div.b") |
:-?
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> </head> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> <script> var time1 = new Date() for (var i = 0; i < 1000; i++) { $("div.b:eq(1)").html() } time1 = ((new Date()).getTime() - time1.getTime()); var time2 = new Date() for (var i = 0; i < 1000; i++) { $('div.b').eq(1).html() } time2 = ((new Date()).getTime() - time2.getTime()); var time3 = new Date() for (var i = 0; i < 1000; i++) { $("div.b").find(":eq(1)").html() } time3 = ((new Date()).getTime() - time3.getTime()); var time4 = new Date() for (var i = 0; i < 1000; i++) { $(":eq(1)", "div.b").html() } time4 = ((new Date()).getTime() - time4.getTime()); alert([time1, time2, time3, time4]) </script> </body> </html> |
Часовой пояс GMT +3, время: 01:48. |