2013-11-13 3 views
1
$(this).attr('id':'name', visibility:'hidden', fill:'black', stroke-width:2) 

использовал этот подход для 1000 элементов для установки их атрибута. Все работает нормально, но .attr() занимает 10 мс для выполнения, мне нужно его оптимизировать, есть ли альтернатива для .attr().альтернатива для .attr() в javascript

Заранее спасибо

+0

, если вам нужна такая производительность, вместо этого используйте pure js. –

+3

Это не выглядит живым синтаксисом. – elclanrs

+0

Кэширование '$ (this)' переменной будет сэкономить много мсек. – Teemu

ответ

1

Вместо того чтобы изменять атрибуты непосредственно, почему бы не добавить класса к тем элементам, которые определяются иметь атрибуты, которые вы хотите?

Я провел тест производительности здесь: http://jsperf.com/attr-vs-classsname И метод attr() был на 33% медленнее в моем браузере/ОС.

Вот как:

JavaScript: вызов

.custom-class { 
    visiblity: hidden; 
    fill: black; 
    stroke-width: 2; 
} 

Кроме того, вы упускаете скобки в вашем ATTR() и дефис stroke-:

this.className = "custom-class"; 
this.id = 'name'; 

сопровождая CSS метод ширины должен быть заключен в кавычки, например:

1

попробовать что-то вроде этого, для лучшего использования производительности SetAttribute().

Метод setAttribute() добавляет указанный атрибут и дает ему указанное значение.

this.setAttribute("id","name"); 
this.style.visibility = 'hidden'; 
Смежные вопросы