Я использую следующую привязку для каждой ячейки в большой таблице Excel Excel. Прямо сейчас я привязываюсь к каждой ячейке, есть ли способ сделать это с ленивой загрузкой ее при наведении мыши на определенную задержку, чтобы каждая ячейка не активировала ее? Если мышь находится над ячейкой в течение 2 секунд, привязка всплывающей подсказки активируется и отображается. Эта всплывающая подсказка - всплывающая подсказка для начальной загрузки.
ko.bindingHandlers.tooltip = {
init: function (element, valueAccessor) {
$(element).tooltip();
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).tooltip("destroy");
});
}
};
Вместо добавления одного обработчика события на ячейку вы можете добавить один обработчик событий в контейнер ячеек. Учитывая разметку
<div class="cell-container" data-bind="tooltipContainer: true">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</diV>
вы можете использовать эту привязку:
ko.bindingHandlers.tooltipContainer = {
init: function (element, valueAccessor) {
$(element).on('hover', '.cell', function() {
$(this).tooltip();
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).tooltip("destroy");
});
}
};
Если вы хотите добавить таймаут сверху, это
ko.bindingHandlers.tooltipContainer = {
init: function (element, valueAccessor) {
$(element).on('hover', '.cell', function() {
var $this = $(this),
callback = function() { $this.tooltip(); };
setTimeout(callback, 2000);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).tooltip("destroy");
});
}
};
должно сработать.