Показать сообщение отдельно
  #2 (permalink)  
Старый 18.07.2010, 01:04
Новичок на форуме
Отправить личное сообщение для mrslndr Посмотреть профиль Найти все сообщения от mrslndr
 
Регистрация: 18.07.2010
Сообщений: 2

Цикл times лучше заменить на each или на обычный for (работает быстрее).

Проставить везде ";" где нужно. Это хорошо для ИЕ и вобще хорошая практика, когда-нибудь спасет от неуловимых ошибок.

div.update лучше заменить на div.innerHTML = *; — prototype дает много лишней функциональности в этом методе, в вашем случае лучше обойтись без update, работать будет значительно быстрее. И строки лучше объединять через массив методом join.

Событие onclick лучше поставить на сам .showmore и отслеживать target. Чем меньше событий зарегистрировано в dom, тем лучше.

В итогде получится такой код:

document.observe('dom:loaded', function() {
	var items = $$('.showmore'), item, words, first, second;
	for (var i=0, len=items.length; i<len; i++) {
		item = items[0];
		// Тут ваш код, формирующий разбивку с сылками
		item.innerHTML = [firstPart, '...', second, '...', '...'].join('');
		item.observe('click', moretoggle);
	}
});

function moretoggle(e) {
	var element = Event.element(e);
	if (element.nodeName == 'A' && element.readAttribute('href') === '') {
		Event.stop(e);
		element.select('#more, #link_more, #link_hide').invoke('toggle');
	}
}
Ответить с цитированием