首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CSS3绑定Knockout.js动画回调

使用CSS3绑定Knockout.js动画回调
EN

Stack Overflow用户
提问于 2012-04-23 11:11:18
回答 2查看 2.9K关注 0票数 2

我正在使用WebApp和CSS3动画为iPad构建一个“Knockout.js”。

不同页面之间的转换是动画化的。当动画结束时,我想得到一个JavaScript回调。

现在,我知道您可以使用这样的Javascript来捕获回调:

代码语言:javascript
运行
复制
element.addEventListener(webkitAnimationEnd, function(){callfunction()},false);

但难道没有更好的方法来做到这一点吗?“淘汰赛”?我希望使用DOM中的data-bind属性绑定回调函数,而不是访问javascript代码中的DOM元素!

有什么想法吗?

编辑:也许我应该补充一下,我是Knockout.js新手,我不知道我想做什么,或者更确切地说,我是怎么做的,还是你用常规的方式做!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-23 11:55:07

根据我的经验,没有“淘汰赛”的方法来处理这类事件。

淘汰赛的作者建议对简单绑定使用KO 事件绑定。但是对于更复杂和/或不引人注目的事件绑定场景,建议使用jQuery:http://knockoutjs.com/documentation/unobtrusive-event-handling.html

我正在用Knockout做一个项目,我听从了他的建议。使用一些KO 事件绑定(用于表单提交)和一些jQuery事件绑定(在我的示例中用于窗口调整大小事件)。

当然,您不需要使用jQuery,但是在您的情况下,走出KO库可能是正确的路线。玩得开心!

票数 2
EN

Stack Overflow用户

发布于 2013-03-21 17:36:31

我使用jQuery过境和一个敲除自定义绑定来完成滑动页面转换。基本上,它会将活动页面(div)幻灯片出来,并将一个新页面滑动到其中。它在移动设备上看起来也不错(iPad,iPhone,iPod Touch,安卓手机等等)。以下是绑定:

Javascript:

代码语言:javascript
运行
复制
    var previousElement = null;
    ko.bindingHandlers.slideVisible = {
        init: function (element, valueAccessor)
        {
            var value = valueAccessor();
            $(element).toggle(ko.utils.unwrapObservable(value));
        },
        update: function (element, valueAccessor)
        {

            var value = ko.utils.unwrapObservable(valueAccessor());
            if (value)
            {
                if (previousElement == null)
                { // initial fade
                    $(element).show();
                }
                else
                {
                    //uses CSS3 Transform for smooth mobile performance
                    $(previousElement).transition({ x: '-100%' }, function () { $(this).hide(); });
                    $(element).css({ x: '100%' });
                    $(element).show().transition({ x: '0%' }, function () 
{ 
//Callback | transition finished code here
});
                }
                previousElement = element;
            }
        }
    };

视图模型片段:

代码语言:javascript
运行
复制
isPageVisible: ko.observable(false)

HTML:

代码语言:javascript
运行
复制
<div data-bind="slideVisible: isPageVisible">
<!-- Page Content Here -->
</div>

JS Fiddle演示

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

https://stackoverflow.com/questions/10279427

复制
相关文章

相似问题

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