如何使用 Javascript 防止页面滚动上的剑道下拉列表折叠?

Posted

技术标签:

【中文标题】如何使用 Javascript 防止页面滚动上的剑道下拉列表折叠?【英文标题】:How to Prevent Collapsing of Kendo Dropdown List on Page Scroll using Javascript? 【发布时间】:2016-07-18 10:14:25 【问题描述】:

我现在面临一个奇怪的问题,并试图实现3个解决方案,但它并没有为我工作了。 P>

问题是与剑道下拉默认功能上外页面滚动塌陷。我想防止崩溃,做了一些研究。

我有一个溶液here以防止这一点,但根据本工作正常的预览强>有示出,但相同的是不是在道场(右上链路)工作段并在真实的项目。

有任何差别,我可以看到这防止下拉的塌缩在预览而非在的道场强>

请帮我解决同我在剑道一个新手。 P>

【问题讨论】:

我建议你创建在Telerik的论坛上一个帖子。我分析预览代码和道场,它是相同的。跨度> 【参考方案1】:

我认为您需要处理小部件的 close 事件才能控制此行为。 这是一个例子:

 <input id="dropdownlist" />
    <script>
        $("#dropdownlist").kendoDropDownList(
          dataSource: [ "text1", "text2" ],
          close: _myClose.bind(this)
        );

        var _myClose = function (e) 
            var wish = true;
            var element = e.sender;
            if (wish) 
                e.preventDefault();
            
        ;
</script>

我绑定 this 以便您可以利用您的类属性。如果需要,您可以将其删除。 kendo 小部件实例在 e.sender 对象下可用。

这里是Docs 的链接。 希望能帮助到你。

【讨论】:

【参考方案2】:
 $(".k-list-container").each(function () 
    var elementId = this.id.split("-")[0];
    var widget = $("#" + elementId).data("kendoDropDownList");
    if (widget) 
        widget.ul.parent().on("wheel", function (e) 
            var container = this;
            if ((container.scrollTop == 0 && e.originalEvent.deltaY < 0) ||
                (container.scrollTop == container.scrollHeight - container.offsetHeight && e.originalEvent.deltaY > 0)) 
                e.preventDefault();
                e.stopPropagation();
            
        );
    
);

【讨论】:

【参考方案3】:

只要剑道下拉列表打开并且鼠标悬停在列表选项上,我发现这个简单的 sn-p 可以可靠地禁用页面滚动。

// Fix annoyance where entire page scrolls when you scroll to the bottom of a dropdown
$(document).bind('mousewheel DOMMouseScroll', function (e) 
    var kendoDropdownBoxes = $('.k-list-container[style*="display: block"]');
    if (kendoDropdownBoxes.length > 0 && kendoDropdownBoxes.is(':hover')) 
        $("body").css("overflow", "hidden");
     else 
        $("body").css("overflow", "auto");
    
);

【讨论】:

以上是关于如何使用 Javascript 防止页面滚动上的剑道下拉列表折叠?的主要内容,如果未能解决你的问题,请参考以下文章

滚动底部 html javascript 上的 div 内容

如何在滚动时为页面上的多个缩略图集实现 jQuery 图像循环循环?

滚动 DIV 元素时如何防止页面滚动?

Javascript:捕获鼠标滚轮事件并且不滚动页面?

防止缓存 iPhone Web 应用程序重新加载(滚动到顶部)

如何防止在页面加载时执行 javascript 函数?