2017-06-02 73 views
0

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 });,他们都没有工作。

如果我在ifconsole.log(data)它确实给我留言回来,所以我100%即时得到的if

我该如何做到这一点?

+0

基本上,如果isSelected的值为1,您希望只能单击该按钮一次? – Shadowfox

+0

如果它满足一些条件,我将'isSelected'属性设置为1并更改锚标记的颜色。我想要的是停止“第二次点击” – Denisx

回答

2
data-bind="click: isSelected == 1 ? function() {return false;} : $parent.onResourceTimeSelect, css: { disabled: isActive == 1 }, style: { background: isSelected == 1 ? '#ddd' : '' }" 

应该这样做,它基本上把一个if放入(敲出)click处理程序中。如果值为1,它将返回false,否则你的函数将被执行。

注意:isSelected需要是可观察的!

+0

呃,没想到这样做。它的工作,谢谢。我在10分钟内接受答案。 – Denisx

+0

不客气。有时我们忽略了简单的解决方案 – Shadowfox

2

我想你click处理器重新命名为onClick和处理方法里面不同的情况:

self.onClick = function(resourceTime, event) { 
    if (resourceTime.isSelected() === 1) { 
    return false; 
    } 

    self.onResourceTimeSelected(resourceTime); 
}; 

优点:

  • click结合值在易于阅读和不易(语法)错误
  • onClick命名表示有几种方法来处理点击
  • 如果您稍后要添加其他案例,您可以轻松地将它们添加到此处理程序中
相关问题