Они оба заканчивают тем, что проверяют одну и ту же вещь.
Если вы используете 1.6.0 или выше, prop('checked')
является наиболее прямым способом jQuery.JQuery не должен анализировать и обрабатывать селектор, чтобы выяснить, что делать. [Примечание ниже]
Вы также можете (начиная с 1.6.1) снова использовать attr('checked')
какс 1.5.x и ранее.
Или вы можете перейти непосредственно к элементу.Предполагая, что x
- это проверяемая вещь, если вы знаете , что хотя бы один элемент соответствует, то:
if (x[0].checked) { /* ... */ }
Если вы не уверены и хотите хеджировать свои ставки:
if (x[0] && x[0].checked) { /* ... */ }
Но, если вы не находитесь в действительно узком цикле, используйте все, что вам проще всего читать, так как различия в производительности не будут иметь значения.Я считаю, что последние довольно легко читать, и я знаю, что они очень быстрые, поэтому я использую их.Но если вы находите их неловкими, используйте все, что вам больше нравится.Нет вреда в использовании is(':checked')
, если вам это нравится, и вы не видите фактического снижения производительности от него (что вряд ли будет препятствовать, опять же, какой-то узкой петле).
Примечание: градус , для которого prop
является более прямым, чем is
, зависит от браузера.prop
это не просто прямая проверка свойства, сначала он проходит через несколько уровней косвенности;и is
не обязательно является чрезвычайно сложным: например, в браузерах WebKit is
может быть достаточно прямым, поскольку WebKit предоставляет функцию для проверки соответствия элемента селектору и изначально поддерживает :checked
;в Firefox (и, я подозреваю, в IE), is
приводит к огромному количеству вызовов функций, поскольку этот, казалось бы, простой селектор пробирается сквозь кишки Sizzle.