首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HoverIntent敲除结合

HoverIntent敲除结合
EN

Stack Overflow用户
提问于 2015-11-02 12:27:13
回答 2查看 68关注 0票数 0

我有一个由剔除数据绑定动态呈现的项目列表。我需要用它来绑定hoverIntent事件,而不是mouseovermouseleave事件。

代码语言:javascript
复制
<a data-bind="attr: { title: $data.Header, href: $root.GetUrl() }, event: { mouseover: function() { $root.showPopup($data.Id) }, mouseleave: function() { $root.hidePopup($data.Id) } }">
<span data-bind="html: $data.Header"></span> </a>

其功能简单如下;

代码语言:javascript
复制
 self.showPopup = function(id) {
     $("#popup-"+id).slideDown();
 };

 self.hidePopup = function(id) {
     $("#popup-"+id).slideUp();
 };

请帮帮忙。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-02 22:21:07

自定义绑定是您应该如何进行的。在这种情况下,一个简单的$().hoverIntent包装器就足够了。

代码语言:javascript
复制
ko.bindingHandlers.hoverIntent = {
    // note: if your hoverIntent options are not observable/ subject to change, 
    // you would be better off specifying this function as init, not update
    update: function(elem, value) {
        var options = ko.utils.unwrapObservable(value());
        if (typeof options === 'object') {
            for (var option in options)
                options[option] = ko.utils.unwrapObservable(options[option]);
        }
       $(elem).hoverIntent(options);
    }
}

上面的绑定支持两个hoverIntent参数语法.hoverIntent(handlerInOut).hoverIntent(optionsObject),例如:

代码语言:javascript
复制
 <a data-bind="hoverIntent: $root.togglePopup">handlerInOut param</a>
 <a data-bind="hoverIntent: { 
     over: $root.showPopup, 
     out: $root.hidePopup, 
     timeout: timeout }">optionsObject param</a>

小提琴中可以看到它的作用。

票数 0
EN

Stack Overflow用户

发布于 2015-11-02 14:31:50

绑定ko事件时,处理程序将自动接收绑定到触发器元素的项作为参数,以便您可以访问它。您可以像这样修改代码以使其工作:

HTML视图:

代码语言:javascript
复制
<a data-bind="attr: { title: $data.Header, href: $root.GetUrl() }, 
   event: { mouseover: $root.showPopup, mouseleave: $root.hidePopup}">
<span data-bind="html: $data.Header"></span> </a>

视图模型:

代码语言:javascript
复制
self.showPopup = function(data) {
    $("#popup-"+data.id).slideDown();
};

self.hidePopup = function(id) {
    $("#popup-"+id).slideUp();
};

而且,更好的是,您可以使用直接管理弹出窗口的自定义绑定。这个问答是相关的。如果谷歌“弹出ko自定义绑定”,您可能会找到其他实现。这里有对定制绑定的完美解释,以防您必须实现自己的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33477570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档