【问题标题】:Popup in Knockout.js relative to DOM elementKnockout.js 中相对于 DOM 元素的弹出窗口
【发布时间】:2017-11-18 09:36:25
【问题描述】:

我正在尝试使用淘汰赛 js 制作弹出窗口。但我无法获得与我的 dom 元素相关的弹出窗口。 我知道有两种解决方案 1) $index 设置为特定的 id。 2)你也可以通过knout获取当前的dom元素,不要使用$index。

但我无法使用上述任何解决方案。 任何人都有一个解决方案,我怎样才能为每个 foreach 以及相对于当前图像提供如下图所示的弹出窗口。

Popup Template

ko.bindingHandlers.popover = {

 init: function(element, valueAccessor, allBindings, viewModel, bindingContext)
 {
    ko.bindingHandlers.value.init(element, valueAccessor, allBindings);
    var source = allBindings.get('popoverTitle');
    var sourceUnwrapped = ko.unwrap(source);
    $(element).attr('data-placement', 'bottom');
    $(element).popover({
      trigger: 'focus',
      content: valueAccessor(),
      title: sourceUnwrapped
    });
  },
  update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
    var value = valueAccessor();
    ko.bindingHandlers.value.update(element, valueAccessor);
  }
};
<div data-bind="foreach : list">
  <div class="col-lg-3 col-md-4 col-xs-6 thumb" >
     <a class="thumbnail ind" href="#">
      <img type="button" class="img-responsive" data-lightbox="" src="http://placehold.it/400x300" alt="" data-toggle="popover" data-bind="popover:" >
      </a>
  </div>

【问题讨论】:

  • 什么是$(element).popover(...)? Popover 不是 knout 或 jquery 中的内置函数,那么您使用的是什么库?

标签: javascript dom knockout.js knockout-2.0 knockout-mapping-plugin


【解决方案1】:

假设您使用的是 Bootstrap 版本的 popover:

我认为问题出在基于焦点的触发器上。默认情况下,图像元素不可聚焦。至于弹出框的位置,它应该已经相对于它所附加的元素,所以你不需要做任何花哨的事情。

更改触发器类型后,它似乎可以正常工作。

$(element).popover({
  trigger: 'hover',
  content: valueAccessor(),
  title: sourceUnwrapped
});

https://jsfiddle.net/3s2h7gz3/

如果您希望使图像元素具有焦点,可以给它一个 tabindex。

<img tabindex="0" type="button" ...

【讨论】:

  • 嘿,我想问最后一个问题,如何添加 在弹出内容中
  • @RishabhSharma 您可以使用 data-content 和 data-html 标签告诉引导程序将内容呈现为 html。见:stackoverflow.com/questions/13202762/…
  • @RishabhSharma 您可能无法通过 boostrap 来理解淘汰赛 observables,因此任何绑定都不起作用。它必须是静态 html。
  • @RishabhSharma 很高兴听到它有帮助。要将答案标记为已接受,请单击答案旁边的复选标记以将其从灰色切换为已填充。
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2012-01-29
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
相关资源
最近更新 更多