【发布时间】:2012-05-17 09:18:49
【问题描述】:
根据knockout click binding documentation's "Note 3",Knockout 阻止点击事件执行默认功能。要覆盖此行为,我所要做的就是从我的处理函数返回 true。所以,我有这个标记:
<div data-bind="visible:Pages().length == 0">
<div class="alert alert-info">Click "Parse" button.</div>
<button class="btn" id="btnParse" title="Parse Tabs">Parse</button>
</div>
现在,我想像这样为按钮附加一个点击事件:
$(function () {
$('#btnParse').on('click', function () { alert('clicked'); return true;});
});
请注意,我从函数中返回 true。这个偶数处理程序永远不会触发。我怎样才能做到这一点?
【问题讨论】:
-
为什么不通过敲除点击绑定添加点击功能?
-
是的,我可以,而且确实有效。但是,我觉得应该为实际与视图模型相关的东西保留使用数据绑定。如果我想进一步操作页面上的元素,我不应该依靠淘汰赛来做到这一点。我也很恼火一个简单的设置,因为这在应该的时候不起作用。
-
嗯,你指的是数据绑定点击功能,它不是在谈论 jquery 点击。
-
我在小提琴中测试了您的确切代码,它工作正常。你必须做其他事情来打破它:jsfiddle.net/tyrsius/YCDt4
-
我不确定这是一个有效的测试。没有模型,也没有使用淘汰赛。作为直接的 html/jquery 组合,这很好用。使用代码,我可以更改按钮的任何属性值。我只是不能让它触发点击事件。您之前的评论让我尝试将 click 绑定到一个仅返回 true 的函数,以诱使淘汰赛让我触发一个事件。这没有帮助。
标签: jquery knockout.js