javascript - knockout : Unable to bind to a button's click event when using Bootstrap popover

标签 javascript twitter-bootstrap knockout.js

当用户单击按钮时,Knockout 执行 Javascript 时遇到问题。不幸的是,这是一个相当复杂的页面,我无法显示完整的内容,但希望下面的小片段就足够了。

我试图简化这一点,甚至不调用 data-bind 的 Knockout 绑定(bind)中的实际 View 模型,而只是简单地发出警报。

<div data-bind="foreach: MyComputedStuff()">
...
  <div class="popover-content">
    <button onclick="alert('bar')">
      This works!
    </button>
    <button data-bind="click: function(data, event){alert('foo')}">
      THIS DOES NOT WORK
    </button>
  </div>
...
</div>

我在这里做错了什么明显的事情吗?

为什么alert('foo')无法执行?

了解我们使用 Bootstrap 并且这个特定按钮位于 popover 内可能会有所帮助。分区。

编辑:

我在控制台中看不到任何内容,页面的 Javascript 的其余部分继续正常工作。我已经在 Chrome 和 IE9 中尝试过了。

我应该说我能够将同一 foreach 中另一个元素上的单击事件绑定(bind)到 View 模型中的函数。这是有效的,这就是我期望能够复制的。 (如果我用 alert('blah') 替换对函数的调用,那么我会在此处看到预期的警报。)那为什么不在我的按钮上呢?

<a rel="tooltip" 
  title="Favourite App"
  data-bind="click: function(data, event){$root.ToggleFavorite(data)}">

最佳答案

感谢 haim770、Alexander、UweB 和 mhu 的帮助。

有同事指出了Knockout没有绑定(bind)点击事件的原因:Bootstrap正在修改DOM。

通过使用Knockout context debugger Chrome 扩展中,我的同事指出,包含我的按钮的 div 元素不在我告诉 Knockout 将绑定(bind)应用到的区域内……Bootstrap 已将其移动。

我正在使用 popovers Bootstrap 的功能,我的按钮位于 Bootstrap 已从我正在 foreaching 的 div 中移出的 popover 内。

关于javascript - knockout : Unable to bind to a button's click event when using Bootstrap popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575754/

相关文章:

javascript - Knockout 选项选择在隐藏/显示后重新初始化

javascript - knockout 复选框 - 仅将选中的值推送到数组中

javascript - 从 JSON 到分组 ul

javascript - 如何根据值来实现这个进度条

javascript - 使用 jQuery DataTable 的未定义值

javascript - 通过比较两个输入字段中的值启用/禁用元素

javascript - TinyMCE 在 jqueryUI 模态对话框中打开

javascript - 为什么在声明事件处理程序之前发出indexDB请求?

javascript - 在通过 AJAX 传递给 JavaScript 函数的 HTML 字符串中插入 PHP 变量?

html - Bootstrap 中的水平选项卡