You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap模态框id为逗号分隔列表时jQuery触发失效问题

问题描述

在WordPress环境下通过遍历逻辑生成多个Bootstrap模态框,每个模态框关联对应展位号的HTML锚点值。网格容器已绑定交互逻辑:带data-location属性的展位div被点击时,会获取对应展位号拼接为ID选择器,触发对应模态框弹出。
目前单ID的模态框可正常运行,但部分模态框的id属性值为逗号分隔的展位号列表,受当前项目结构限制无法修改该id命名规则,需适配现有逻辑让逗号分隔id的模态框也能被正常触发。

原有实现代码

模态框触发逻辑

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery(".container1 > *[data-location]").click(function() {
        var booth = "#" + jQuery(this).data("location");
        jQuery(booth).modal({ show: false});
        jQuery(booth).modal('show');
        console.log(booth);
    }); 
});
</script>

展位网格代码片段

<div class="k10" id="k10" data-id="k10" booth-number="710" data-location="710">710</div>
<div class="k11" id="k11" data-id="k11" booth-number="611" data-location="611">611</div>
<div class="k12" id="k12" data-id="k12" booth-number=""></div>
<div class="k13" id="k13" data-id="k13" booth-number="610" data-location="610">610</div>
<div class="k14" id="k14" data-id="k14" booth-number="511" data-location="511">511</div>
<div class="k15" id="k15" data-id="k15" booth-number=""></div>
<div class="k16" id="k16" data-id="k16" booth-number="510" data-location="510">510</div>
<div class="k17" id="k17" data-id="k17" booth-number="411" data-location="411">411</div>
<div class="k18" id="k18" data-id="k18" booth-number=""></div>
<div class="k19" id="k19" data-id="k19" booth-number="410" data-location="410">410</div>
<div class="k20" id="k20" data-id="k20" booth-number="311" data-location="311">311</div>

模态框示例

第一个为可正常触发的单id模态框,第二个为无法触发的逗号分隔多值id模态框

<div id="613" class="block-3d6e5076-e12d-4c8c-b2e4-185fd546a91a modal fade" tabindex="-1" aria-hidden="true" booth-number="613"></div>
<div id="710, 712" class="block-3d6e5076-e12d-4c8c-b2e4-185fd546a91a modal fade" tabindex="-1" aria-hidden="true" booth-number="710, 712"></div>
修复方案

原有逻辑失效的核心原因是:jQuery的ID选择器会将逗号识别为多选择器分隔符,无法直接匹配包含逗号、空格的ID值。不需要修改现有ID命名规则,只需调整选择器匹配逻辑,即可同时兼容单ID、逗号分隔多ID的模态框场景。

修复后的触发代码如下:

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery(".container1 > *[data-location]").click(function() {
        // 获取当前点击展位的编号,去除首尾多余空格
        const currentBooth = jQuery(this).data("location").trim();
        // 匹配对应模态框:兼容单id、逗号分隔(带/不带空格)的多id格式
        const $targetModal = jQuery(".modal").filter(function() {
            // 将模态框id按逗号拆分,逐个去除空格后匹配当前展位号
            const relatedBooths = this.id.split(',').map(boothCode => boothCode.trim());
            return relatedBooths.includes(currentBooth);
        });
        // 执行模态框弹出逻辑
        $targetModal.modal({ show: false });
        $targetModal.modal('show');
    }); 
});
</script>
  • 逻辑说明:
    • 放弃直接拼接#生成ID选择器的写法,从根源避免逗号被误识别为选择器分隔符
    • 遍历所有模态框元素,将模态框ID按逗号拆分后清除首尾空格,只要拆分结果包含当前点击的展位号,就判定为目标模态框
    • 完全兼容原有单ID模态框的触发逻辑,无需修改已生成的模态框、展位DOM的任何属性

内容的提问来源于stack exchange,提问作者muhareb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:15:48