Textarea resizer on YUI
Подскажите пожалст, каким макаром переделать данный кусок кода, чтобы инициализировался объект не по id, а по его class
function SwatTextarea() { YAHOO.util.Event.onContentReady('myid', this.handleOnAvailable, this, true); } SwatTextarea.prototype.handleOnAvailable = function() { this.textarea = document.getElementById('myid'); } |
Рещение найдено с помощью вот такой вот функции:
function createSwat(className) { var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'), textarea_obj=[]; for(var i=0,l=els.length;i<l;i++){ els[i]['id'] = els[i]['id']||('res_'+i); textarea_obj.push(new SwatTextarea(els[i]['id'])); } return textarea_obj; } В итоге получилось нечто типа (упрощенно)... function SwatTextarea(id) { this.id = id; YAHOO.util.Event.onContentReady(this.id, this.handleOnAvailable, this, true); } SwatTextarea.prototype.handleOnAvailable = function() { this.textarea = document.getElementById(this.id); } function createSwat(className) { var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'), textarea_obj=[]; for(var i=0,l=els.length;i<l;i++){ els[i]['id'] = els[i]['id']||('res_'+i); textarea_obj.push(new SwatTextarea(els[i]['id'])); } return textarea_obj; } YAHOO.util.Event.onDOMReady(function(){createSwat('custom_class')}); Однако это не избавляет нас от id-шников, а даже как бы наоборот. Посему цель не совсем достигнута и вопрос остается открытым (интересен альтернативный вариант решения проблемы, который позволит полностью избавиться от использования id). |
Часовой пояс GMT +3, время: 11:27. |