Оптимизация селекторов Jquery - PullRequest
0 голосов
/ 13 сентября 2011

Рассмотрим HTML

<div id="one" >
<input type="radio" value="x" name="group" >
<input type="radio" value="y" name="group" >
<input type="radio" value="z" name="group" >
</div>

У меня есть два вопроса относительно доступа к DOM с помощью Jquery.

  1. Первый вопрос

Я просто хочу найти значение входного радио, которое выбрано. Так у меня есть

Метод 1:

var value="";
$("#one input:radio[name=group]").each(function(){
  if($(this).is(:checked)){
   value=$(this).val();
  }
});

Метод 2:

var value=$("#one input:radio[name=group]:checked").val();

Существует ли значительная разница в производительности между двумя методами?а не метод 2, сделайте это в одной строке кода ..

Или, пожалуйста, объясните на самом деле, что происходит со строкой "input:radio[name=group]:checked" внутри jquery?

  1. Вопрос второй

Я хочу установить для проверенного атрибута значение true для ввода со значением "y".Так что

$("input:radio").filter("[value=y]").attr('checked', true);

и

$("#one input:radio[name=group]").filter("[value=y]").attr('checked', true);

будут делать то же самое.

Есть ли разница в производительности при добавлении "div id" и "[name = group]"

1 Ответ

1 голос
/ 13 сентября 2011

Когда дело доходит до чистого перфекта, есть одно решение, которое я нахожу лучше: «Сделай сам» (на jsperf )

Я сделал твой тест, но он только взял менявремя, чтобы сделать копию / вставку ;)

http://jsperf.com/selectoroptimization

Из результата, который я добавляю, лучший метод, кажется, второй для первого вопроса, но для второгоэто зависит от браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...