单击后取消绑定对象的单击事件?

时间:2017-06-02 11:52:09

标签: javascript jquery knockout.js

我有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它应该取消绑定click事件。

if (data['isSelected'] == 1) {

}

如何停止点击事件?试过$(data).unbind('click')$(data).click(function () { return false });并且没有一个可以使用。

如果我在console.log(data)中写if,它确实会给我回复消息,所以我100%进入if

我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

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

应该做的伎俩,它基本上把一个if放在(淘汰)点击处理程序中。如果值为1,则返回false,否则将执行函数。

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

答案 1 :(得分:2)

我将click处理程序重命名为onClick并处理方法中的不同情况:

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

  self.onResourceTimeSelected(resourceTime);
};

优点:

  • 您的click绑定值易于阅读且不易出现(语法)错误
  • onClick命名表示有多种方法可以处理点击
  • 如果您希望稍后添加其他案例,可以轻松地将其添加到此处理程序
相关问题