JS: Improve selector used in the selectable behavior
This commit is contained in:
parent
755f361e4c
commit
30124f384e
|
@ -5,6 +5,34 @@
|
|||
|
||||
Icinga.Behaviors = Icinga.Behaviors || {};
|
||||
|
||||
/**
|
||||
* Select all contents from the target of the given event
|
||||
*
|
||||
* @param {object} e Event
|
||||
*/
|
||||
function onSelect(e) {
|
||||
var b = document.body,
|
||||
r;
|
||||
if (b.createTextRange) {
|
||||
r = b.createTextRange();
|
||||
r.moveToElementText(e.target);
|
||||
r.select();
|
||||
} else if (window.getSelection) {
|
||||
var s = window.getSelection();
|
||||
r = document.createRange();
|
||||
r.selectNodeContents(e.target);
|
||||
s.removeAllRanges();
|
||||
s.addRange(r);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Behavior for text that is selectable via double click
|
||||
*
|
||||
* @param {Icinga} icinga
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
var Selectable = function(icinga) {
|
||||
Icinga.EventListener.call(this, icinga);
|
||||
this.on('rendered', this.onRendered, this);
|
||||
|
@ -12,25 +40,10 @@
|
|||
|
||||
$.extend(Selectable.prototype, new Icinga.EventListener(), {
|
||||
onRendered: function(e) {
|
||||
$('.selectable', e.target).on('dblclick', e.data.self.selectText);
|
||||
},
|
||||
|
||||
selectText: function(e) {
|
||||
var b = document.body,
|
||||
r;
|
||||
if (b.createTextRange) {
|
||||
r = b.createTextRange();
|
||||
r.moveToElementText(e.target);
|
||||
r.select();
|
||||
} else if (window.getSelection) {
|
||||
var s = window.getSelection();
|
||||
r = document.createRange();
|
||||
r.selectNodeContents(e.target);
|
||||
s.removeAllRanges();
|
||||
s.addRange(r);
|
||||
}
|
||||
$(e.target).find('.selectable').on('dblclick', onSelect);
|
||||
}
|
||||
});
|
||||
|
||||
Icinga.Behaviors.Selectable = Selectable;
|
||||
|
||||
})(Icinga, jQuery);
|
||||
|
|
Loading…
Reference in New Issue