Сообщение от Cuprum
|
Согласен, в том смысле, что js я знаю плохо
|
не думаю я, что это не от языка зависит. Просто в некоторый языках принято все слишком упрощать, а в некоторых - слишком усложнять (ну или нельзя не усложнять)
Сообщение от Cuprum
|
в одном случае, когда есть какие-то описательные параметры, сделать проще - сделать одним способом, если эти параметры изменились или отсутствуют, "проще" - значит по-другому.
|
ну да, логично. Решение зависит от контекста. Чем проще, тем лучше. Проще зависит от контекста
я бы сделал как-то так (ошибки не исправлял, может даже новые добавил)
var QuotePanel = new Class({
initialize: function( textarea ){
this._el = textarea;
this._panel = new Element('div', {'html': '<a href="#">Вставить цитату в поле</a>'});
document.body.addEvents({
'mouseup': this._onMouseUp_body.of(this),
'click': this._onClick_body.of(this)
});
this._panel.addEvent( 'click', this._onClick_panel.of(this) );
this._panel.inject( document.body );
},
_onMouseUp_body: function( e ){
if( ! Selection.get() )
return;
var panelWidth = this._panel.getStyle('width').parseInt();
var top = e.page.y - 40;
var left = e.page.x - panelWidth/3;
this._panel
.setStyles({
'top': top,
'left': left,
'display': 'block',
'opacity': 0
})
.morph({
'opacity': 1,
'top': top-10
});
},
_onClick_body: function( e ){
if( ! Selection.get() )
this._panel.setStyle('display', '');
},
_onClick_panel: function( e ){
this._el.value += this._el.value+'<blockquote>'+Selection.get()+'</blockquote>\r\n';
this._el.focus();
this._panel.setStyle('display', '');
e.preventDefault();
}
});