【问题标题】:How to open multiple modals from the multiple product tiles having the same DOM structure?如何从具有相同 DOM 结构的多个产品图块中打开多个模式?
【发布时间】:2019-10-22 02:35:55
【问题描述】:

我在这里使用在某种程度上定制的 boostrap 模态。我网站的 PLP 上的单个产品中有以下 HTML:

    <div class="modal size-variants fade pr-0" id="tumbler-size-modals" role="dialog">
        <div class="modal-dialog">
            <!-- Modal content-->
            <div class="modal-body">
                <p>Variants are loading..</p>
            </div>
        </div>
    </div>

这个模态是从这个a标签触发的:

   <div class="more-sizes-link hide-mobile">
        <a href="javascript:void(0)" data-toggle="modal" data-target="#tumbler-size-modals">
            <isprint value="${Resource.msg('more.sizes.text.nonmobile', 'plp', null)}" />
        </a>
    </div>

这是相同的 CSS:

.modal-backdrop.show{
    opacity: 0;
}

.modal-open{
    overflow-y: visible;
}

.modal{
    position: absolute;
    top: unset;
    bottom: 23%;
    border: 1px solid $border-grey;
    background-color: $transparent-white;
}

目前,对于 PLP 上的单个产品图块,此模式会按预期弹出,但是当我尝试在另一个图块打开时从另一个图块打开相同的模式时,没有任何操作。我该怎么做才能从多个产品图块中弹出此模式。

这是显示一个产品图块成功弹出的模式的图像:

这是需要单击才能成功打开此产品图块的模式的链接:

我想在另一个模式打开时从标记的链接打开另一个模式。那么,我怎样才能达到同样的效果呢?

为了实现这一点,我需要牢记什么具体的事情吗?

我没有在标签中添加 ISML,虽然我正在尝试使用 Demandware ISML 模板,但这与我在这里的问题无关。

【问题讨论】:

  • 那么每个具有模态的产品都具有相同的模态ID `tumbler-size-modals'?

标签: html css sass bootstrap-4


【解决方案1】:

ID 和相应的数据目标必须是唯一的添加产品 id 或 id="tumbler-size-modals" 独有的东西

【讨论】:

  • 好的很酷,谢谢,现在我想我的解决方案有误。这可能会帮助我得到我需要的东西。
  • 一般来说,ID 必须是唯一的。如果你想对许多元素做某事,你应该使用类。
  • 但是这是 bootatrap modal,如果 bootstrap 已经集成到我的项目中,不能真正使用自定义 js 来打开一个modal
【解决方案2】:

根据我的评论,您需要确保 ID 是唯一的。我在 ID 中放置了一个示例变量,但您需要确保它适用于您的系统。

    <div class="modal size-variants fade pr-0" id="tumbler-size-modals-${product_id}" role="dialog">
        <div class="modal-dialog">
            <!-- Modal content-->
            <div class="modal-body">
                <p>Variants are loading..</p>
            </div>
        </div>
    </div>


   <div class="more-sizes-link hide-mobile">
        <a href="javascript:void(0)" data-toggle="modal" data-target="#tumbler-size-modals-${product_id}">
            <isprint value="${Resource.msg('more.sizes.text.nonmobile', 'plp', null)}" />
        </a>
    </div>

【讨论】:

  • 酷,谢谢,这可能完全解决我的问题,让我们检查一下,如果在此之后仍有问题,我会在这里更新我的问题。否则,这可能是我一直在寻找的解决方案。
  • 好像data-target="#tumbler-size-modals-${product_id}"不能做,因为#$不能在ISML模板中一起使用,这种情况我该怎么办?
  • 我找到了解决方案,我在资源消息中传递了哈希值,然后将产品 ID 附加到它上面,这样 ID 始终是唯一的。你的解决方案给了我这个想法,我有点摸不着头脑,我做到了。所以感谢您的解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 2014-12-18
  • 2023-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
相关资源
最近更新 更多