2011-01-19 3 views
1

просто интересно, какой из них будет быстрее?JQuery: Что быстрее? .text() или .attr ('id')?

if ($(this).text() == 'Test') 
{ 
    ... 
} 

или

if ($(this).attr('id') == 'Test') 
{ 
    ... 
} 

или есть более быстрый способ?

или они оба одинаковы?

благодаря

+1

Я не уверен, почему вы сравниваете текст() с attr() - они не связаны. Текст возвращает содержимое элемента без HTML, в то время как attr должен получить атрибуты элемента, такие как его идентификатор. С точки зрения скорости, скорость быстрее. Если бы вы могли сделать это в сборке, это было бы быстрее :) – Christian

+0

@ Христиан, я думаю, у него есть возможность хранить данные как текст или как id. –

+0

спасибо за ваши ребята! im просто возится с некоторыми идеями кода, пытаясь разобраться в моем рабочем процессе :) – David

ответ

3

намного быстрее будет this.id === 'Test', оптимизированная версия $(this).attr('id') == 'Test'.

Обратите внимание, что для этого используется свойство объекта, а не attr, а также оператор точного равенства ===.

NB, что проверка идентификатора будет намного быстрее, потому что text() (в зависимости от возможностей вашего браузера) внутренне перебирает каждый отдельный дочерний узел и извлекает его текстовое значение. Для проверки идентификатора требуется только проверка одного атрибута.

+0

ах хорошо, спасибо за информацию! очень благодарен :) – David

1

Чтобы добавить к запросу lonesomeday, я бы указал, что правильный ответ, скорее всего, «это не имеет значения». Если это так, то вы, вероятно, не должны запускать такой критически важный код в браузере посетителя, и у них могут быть опасения по поводу того, что их процессорное время используется таким образом; помните, (на стороне клиента) JavaScript не работает на ваш компьютер!

+0

спасибо за ответ, thats ok, не работает слишком высокопроизводительный код, просто интересно было :) – David

0

Простой test показывает, что они почти одинаково быстрые. text() похоже немного быстрее.

+1

На самом деле '.attr (id)' быстрее, хотя и незначительно, в вашем тесте. Раньше я делал ту же ошибку, но чем больше число сообщалось, тем быстрее. Кроме того, разница в скорости будет преувеличена, когда количество узлов внутри '$ (this)' увеличивается за пределы 1. –

+0

спасибо за ссылку, пыталось найти что-то подобное, прежде чем публиковать здесь;) я запустил тест, и он сказал, что .attr ('id') был на 22% быстрее, чем .text(). – David

+0

Box9 и Дэвид: Странно. Я получил текст() на 7% быстрее (для этого конкретного теста) в Chrome 8. И да, это только в том случае, если узел не содержит дочерних элементов. Детским элементам следует значительно замедлить текст(). – Dogbert

Смежные вопросы