knockout click点击事件及事件源解释

绑定click点击事件示例

<body>
    you've clicked<span data-bind="text:number"></span>
    <button data-bind="click:count">Click Me</button>
</body>
<script type="text/javascript">
    var viewModel={
        number:ko.observable(0),
        count:function(){
            var preCount=this.number();
            this.number(preCount+1);
        }
    };
    ko.applyBindings(viewModel);
</script>

结果

you’ve clicked 0
Click Me
当点击Click Me 的时候(you’ve clicked 0) 0会加1,无限叠加


事件源:( event )

在事件中,当前操作的那个元素就是事件源。比如网页元素中a标签和input都有onclick事件,当点击a发生onclick事件时,事件源就是a标签,当点击input发送onclic事件是,事件源就是input.

有些情况,你可能需要使用事件源对象,Knockout会将这个对象传递到你函数的第一个参数:

<button data-bind="click: myFunction">
    Click me
</button>
<script type="text/javascript">
    var viewModel = {
        //knockout默认是将源事件作为函数的第一个参数,你可以在button中不传event这个参数
        myFunction: function(event) {
            if (event.shiftKey) {
            } else {} 
      }
 };

</script>

如何获取事件对象那??
var e = event || window.event;这句话就是定义了一个变量来获取事件对象,因为不同的浏览器获取事件对象的方法有点不太一样,IE下是window.event,标准下是event,为了兼容所以写了event || window.event.


允许执行默认事件

//如果绑定了click事件后,默认事件为点击事件href的时间将不会触发
<a href="http://www.baidu.com" data-bind="click:myFunction" taget="_blank">Baidu</a>

<script type="text/javascript">
    var viewModel = {
    //当点击A标签时会执行这个函数,然后结束,不会进行跳转
        myFunction: function() {
           alert("OK");
      }
 };           
</script>



//解决办法
<a href="http://www.baidu.com" data-bind="click:myFunction" taget="_blank">Baidu</a>

<script type="text/javascript">
    var viewModel = {
    //当点击A标签时会执行这个函数后在进行跳转
        myFunction: function() {
           alert("OK");
           return true;
      }
 };           
</script>

更多click事件请点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值