Use single event handlers on parent instead of each child element
This commit is contained in:
parent
8149ea3969
commit
19fe478b7f
@ -313,7 +313,21 @@ ListFacet.prototype._update = function(resetScroll) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: this is very slow for large numbers of choices (e.g. 18 seconds for 13K choices)
|
||||||
this._elmts.bodyInnerDiv.empty();
|
this._elmts.bodyInnerDiv.empty();
|
||||||
|
|
||||||
|
// None of the following alternatives are significantly faster
|
||||||
|
|
||||||
|
// this._elmts.bodyInnerDiv.innerHtml = '';
|
||||||
|
|
||||||
|
// this._elmts.bodyInnerDiv.detach();
|
||||||
|
// this._elmts.bodyInnerDiv.children().remove();
|
||||||
|
// this._elmts.bodyInnerDiv.appendTo('.facet-body');
|
||||||
|
|
||||||
|
// this._elmts.bodyInnerDiv.remove();
|
||||||
|
// this._elmts.bodyInnerDiv.html('<div class="facet-body-inner" bind="bodyInnerDiv"></div>');
|
||||||
|
// this._elmts.bodyInnerDiv.appendTo('.facet-body');
|
||||||
|
|
||||||
//this._elmts.statusDiv.show();
|
//this._elmts.statusDiv.show();
|
||||||
this._elmts.controlsDiv.show();
|
this._elmts.controlsDiv.show();
|
||||||
|
|
||||||
@ -409,7 +423,8 @@ ListFacet.prototype._update = function(resetScroll) {
|
|||||||
|
|
||||||
var wireEvents = function() {
|
var wireEvents = function() {
|
||||||
var bodyInnerDiv = self._elmts.bodyInnerDiv;
|
var bodyInnerDiv = self._elmts.bodyInnerDiv;
|
||||||
bodyInnerDiv.find('.facet-choice-label').click(function() {
|
bodyInnerDiv.on('click', '.facet-choice-label', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
var choice = findChoice($(this));
|
var choice = findChoice($(this));
|
||||||
if (choice.s) {
|
if (choice.s) {
|
||||||
if (selectionCount > 1) {
|
if (selectionCount > 1) {
|
||||||
@ -423,28 +438,28 @@ ListFacet.prototype._update = function(resetScroll) {
|
|||||||
select(choice);
|
select(choice);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
bodyInnerDiv.find('.facet-choice-edit').click(function() {
|
bodyInnerDiv.on('click', '.facet-choice-edit', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
var choice = findChoice($(this));
|
var choice = findChoice($(this));
|
||||||
self._editChoice(choice, $(this).closest('.facet-choice'));
|
self._editChoice(choice, $(this).closest('.facet-choice'));
|
||||||
});
|
});
|
||||||
|
|
||||||
bodyInnerDiv.find('.facet-choice').mouseenter(function() {
|
bodyInnerDiv.on('mouseenter mouseleave', '.facet-choice', function(e) {
|
||||||
$(this).find('.facet-choice-edit').css("visibility", "visible");
|
e.preventDefault();
|
||||||
|
var visibility = 'visible';
|
||||||
var choice = getChoice($(this));
|
if (e.type == 'mouseleave') {
|
||||||
if (!choice.s) {
|
visibility = 'hidden';
|
||||||
$(this).find('.facet-choice-toggle').css("visibility", "visible");
|
|
||||||
}
|
}
|
||||||
}).mouseleave(function() {
|
$(this).find('.facet-choice-edit').css("visibility", visibility);
|
||||||
$(this).find('.facet-choice-edit').css("visibility", "hidden");
|
|
||||||
|
|
||||||
var choice = getChoice($(this));
|
var choice = getChoice($(this));
|
||||||
if (!choice.s) {
|
if (!choice.s) {
|
||||||
$(this).find('.facet-choice-toggle').css("visibility", "hidden");
|
$(this).find('.facet-choice-toggle').css("visibility", visibility);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
bodyInnerDiv.find('.facet-choice-toggle').click(function() {
|
bodyInnerDiv.on('click', '.facet-choice-toggle', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
var choice = findChoice($(this));
|
var choice = findChoice($(this));
|
||||||
if (choice.s) {
|
if (choice.s) {
|
||||||
deselect(choice);
|
deselect(choice);
|
||||||
@ -454,7 +469,7 @@ ListFacet.prototype._update = function(resetScroll) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
window.setTimeout(wireEvents, 100);
|
window.setTimeout(wireEvents, 100);
|
||||||
};
|
}; // end _update()
|
||||||
|
|
||||||
ListFacet.prototype._renderBodyControls = function() {
|
ListFacet.prototype._renderBodyControls = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
Loading…
Reference in New Issue
Block a user