如何使用Knockout禁用click事件?

时间:2013-03-06 10:05:42

标签: javascript jquery knockout.js

我有两个按钮,名为

<a href='#' data-bind='click: clickActivateSpatialSearch' id='draw_polygon'>
<a href='#' data-bind='click: clickActivateSpatialSearchBox' id='draw_box'>

这里最好的是什么?我可以在$(document).ready上使用jQuery吗?问题是数据绑定单击在按下时禁用其他单击事件,同样如此。但是当我按下相同的按钮时,它会再次启用第二个按钮。

所以我想用所有的胡言乱语来说,我只希望一次启用一个按钮。这可能与淘汰赛合作吗?如果是这样,请告诉我如何。 PS:我已经看过关于启用的淘汰网站,但我没有得到它。我应该如何让它完全发挥作用?

2 个答案:

答案 0 :(得分:3)

当我们拥有像这样的代码

时,

knockoutjs启用功能会起作用

最初两个链接都处于活动状态。如果您单击任何一个链接,则会禁用另一个链接。如果再次单击该链接,则会启用另一个链接。

这不是你所要求的答案..这就是如何使用淘汰赛启用工作的答案

您只需启用一个按钮,然后必须有一些条件,使用此启用绑定应用这些条件,这就解决了所有问题。

HTML: -

<input type="text" data-bind="enable: linkTwo() != 'clicked',click: clickActivateSpatialSearch" id='draw_polygon'/>
<input type="text" data-bind="enable: linkOne() != 'clicked',click: clickActivateSpatialSearchBox" id='draw_box'/>

脚本: -

var self = this;
self.linkOne = ko.observable();
self.linkTwo = ko.observable();

self.clickActivateSpatialSearch = function(){ 
  if(self.linkOne() != 'clicked'){
      self.linkOne('clicked'); 
  } 
  else{
    self.linkOne('notClicked');
  }
// some code here
};

self.clickActivateSpatialSearchBox= function(){
  if(self.linkTwo() != 'clicked'){
      self.linkTwo('clicked'); 
  } 
  else{
    self.linkTwo('notClicked');
  }
// some code here
};

注意:启用和禁用绑定不适用于锚标记。它适用于输入,textarea,Select ..

答案 1 :(得分:1)

您可以添加一个observable,其中包含按下了哪个按钮,然后将单击更改为检查可观察对象的函数:

<a href='#' data-bind='click: function() { 
    if(buttonClickedObservable() == 'polygon')
    {
        clickActivateSpatialSearch();
    }' id='draw_polygon'>
<a href='#' data-bind='click: function() { 
    if(buttonClickedObservable() == 'box')
    {
        clickActivateSpatialSearchBox'();
    }' id='draw_box'>

你必须决定如何设置observable。