取消绑定点击后对象的单击事件?
问题描述:
我anchor
标签取消绑定点击后对象的单击事件?
<a class="list-group-item" data-bind="click: $parent.onResourceTimeSelect, css: { disabled: isActive == 1 }, style: { background: isSelected == 1 ? '#ddd' : '' }"></a>
这给了我点击的资源的对象。
onResourceTimeSelect: function (data, e) {
}
data
是对象。有财产isSelected
,如果它的1
它应该取消绑定点击事件。
if (data['isSelected'] == 1) {
}
如何停止点击事件?试用$(data).unbind('click')
,$(data).click(function() { return false });
,他们都没有工作。
如果我在if
写console.log(data)
它确实给我留言回来,所以我100%即时得到的if
。
我该如何做到这一点?
答
data-bind="click: isSelected == 1 ? function() {return false;} : $parent.onResourceTimeSelect, css: { disabled: isActive == 1 }, style: { background: isSelected == 1 ? '#ddd' : '' }"
应该这样做,它基本上把一个if放入(敲出)click处理程序中。如果值为1,它将返回false,否则你的函数将被执行。
注意:isSelected需要是可观察的!
答
我想你click
处理器重新命名为onClick
和处理方法里面不同的情况:
self.onClick = function(resourceTime, event) {
if (resourceTime.isSelected() === 1) {
return false;
}
self.onResourceTimeSelected(resourceTime);
};
优点:
- 你
click
结合值在易于阅读和不易(语法)错误 -
onClick
命名表示有几种方法来处理点击 - 如果您稍后要添加其他案例,您可以轻松地将它们添加到此处理程序中
基本上,如果isSelected的值为1,您希望只能单击该按钮一次? – Shadowfox
如果它满足一些条件,我将'isSelected'属性设置为1并更改锚标记的颜色。我想要的是停止“第二次点击” – Denisx