You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Kendo Tooltip滚动至最后一项(最新用户评论)?

嘿,这个需求我之前也碰到过!要让Kendo Tooltip弹出时自动滚动到底部查看最新评论,其实只要结合Tooltip的内置事件和DOM操作就能轻松搞定,我分两种场景给你说:

场景1:评论内容是同步渲染的

如果你的评论内容是直接在content函数里同步生成的,直接在Tooltip的show事件里设置滚动条位置就好:

// 初始化Grid对应的Tooltip
$("#yourGridId").kendoTooltip({
    filter: "tr", // 定位到Grid的每一行
    content: function(e) {
        // 替换成你生成评论内容的逻辑,比如从行数据中提取评论
        const rowData = $("#yourGridId").data("kendoGrid").dataItem(e.target.closest("tr"));
        return `<div class="comments-container">${rowData.userComments.join("<br>")}</div>`;
    },
    show: function(e) {
        // 获取Tooltip的内容容器DOM元素
        const contentElement = e.sender.contentElement;
        // 将滚动条直接拉至底部
        contentElement.scrollTop(contentElement[0].scrollHeight);
    }
});

场景2:评论内容是异步加载的

如果评论是通过AJAX异步获取的,得等内容完全渲染到Tooltip后再操作滚动,不然会因为DOM未更新导致滚动失效:

$("#yourGridId").kendoTooltip({
    filter: "tr",
    content: function(e) {
        const deferred = $.Deferred();
        const rowId = e.target.closest("tr").data("row-id");
        
        // 异步请求评论数据
        $.get("/api/getUserComments", { id: rowId }, function(comments) {
            // 生成评论列表的HTML
            const commentHtml = comments.map(item => `<p>${item.content}</p>`).join("");
            deferred.resolve(`<div class="comments-container">${commentHtml}</div>`);
            
            // 用setTimeout确保DOM更新完成后再滚动
            setTimeout(() => {
                const tooltipContent = $(".k-tooltip-content");
                tooltipContent.scrollTop(tooltipContent[0].scrollHeight);
            }, 0);
        });
        
        return deferred.promise();
    }
});

额外注意事项

  • 你已经设置的CSS k-tooltip-content{ overflow-y: scroll !important } 一定要保留,这是滚动条出现的前提,没有它的话scrollTop操作不会生效。
  • 如果Tooltip弹出后评论还会实时更新,可以监听评论更新的事件,每次更新后重新执行scrollTop操作,保证始终显示最新内容。

内容的提问来源于stack exchange,提问作者Zayn malik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:32:35