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

如何通过点击缩略图按钮修改模态框图片的src属性?

问题描述

我做了个带并排缩略图按钮的网页,点击缩略图会弹出模态框显示大图和关闭按钮。现在想实现:点击不同缩略图按钮时,模态框里的图片src属性自动切换成对应按钮自定义imgsrc属性的值。自己写的jQuery代码没生效,附上相关代码和一段可用的参考示例。


我的代码

缩略图按钮HTML

<!-- 对应"image 04"的缩略图按钮 -->
<button class="graveyard-btn graveyard-primary"
        data-toggle="modal"
        data-target="#exampleModal"
        imgsrc="http://example.com/wp-content/uploads/04.png">
    <img src="http://example.com/wp-content/uploads/04.png">
</button>

模态框图片默认设置HTML

<!-- 模态框图片默认显示"image 22" -->
<div class="modal-body">
    <img class="modal-image" 
         src="http://example.com/wp-content/uploads/22.png"
         alt="点击按钮查看大图" />
</div>

无效的jQuery代码

<!-- 意图:点击缩略图时,把模态框图片的src改成当前按钮imgsrc属性的值 -->
$('.graveyard-dump span').ready(function click(f) {
       $('.graveyard-dump span').click(function click(f) {
            $('.modal-image').attr('src', $(this).attr("imgsrc"));
    });
});

参考的可用代码示例

HTML

<!-- 带多属性的红色按钮,供jQuery读取并修改页面元素 -->
<span class="redbtn1" 
      picChange="url(http://example.com/wp-content/uploads/Resin-Red.png)" 
      name="Red" 
      color="#ff0000" 
      background1="#ff2400"  
      background2="#ba110c"  
      background3="#90021F"  
      background4="none"
      name1="Scarlet"
      name2="Crimson"
      name3="Burgundy"
      name4="-"
></span>

jQuery

<!-- 点击按钮时,给当前按钮加active类、移除其他按钮的active类,并批量修改页面元素的属性和内容 -->
$('.changecolor span').ready(function click(f) {
        $('.changecolor span').click(function click(f) {
            $('.changecolor span').removeClass("active");
            $(this).addClass("active");
            $('.pic').css('background-image', $(this).attr("picChange"));
            $('.name').text($(this).attr("name"));
            $('.name').css('color', $(this).attr("color"));
            $('.colorbar-1').css('background', $(this).attr('background1'));
            $('.colorbar-2').css('background', $(this).attr('background2'));
            $('.colorbar-3').css('background', $(this).attr('background3'));
            $('.colorbar-4').css('background', $(this).attr('background4'));
            $('.colorbar-1').text($(this).attr("name1"));
            $('.colorbar-2').text($(this).attr("name2"));
            $('.colorbar-3').text($(this).attr("name3"));
            $('.colorbar-4').text($(this).attr("name4"));
        });
});

解决方案

你的代码失效主要是选择器不匹配和事件绑定逻辑错误,以下是修正后的实现:

步骤1:修正自定义属性(推荐符合HTML5规范)

把按钮的imgsrc改成data-imgsrc(自定义属性推荐用data-*前缀,符合标准且jQuery读取更方便):

<button class="graveyard-btn graveyard-primary"
        data-toggle="modal"
        data-target="#exampleModal"
        data-imgsrc="http://example.com/wp-content/uploads/04.png">
    <img src="http://example.com/wp-content/uploads/04.png">
</button>

步骤2:修正jQuery代码

方案1:直接绑定按钮点击事件

$(document).ready(function() {
    // 选中所有缩略图按钮绑定点击事件
    $('.graveyard-btn').click(function() {
        // 读取当前按钮的图片地址,修改模态框图片的src
        $('.modal-image').attr('src', $(this).data('imgsrc'));
        // 如果坚持用原imgsrc属性,就改成:$(this).attr('imgsrc')
    });
});

方案2:利用Bootstrap模态框内置事件(更可靠)

如果用的是Bootstrap模态框,推荐用show.bs.modal事件,避免点击和模态框弹出的时序问题:

$(document).ready(function() {
    // 监听模态框显示前的事件
    $('#exampleModal').on('show.bs.modal', function(event) {
        var triggerBtn = $(event.relatedTarget); // 获取触发模态框的按钮
        var imgUrl = triggerBtn.data('imgsrc'); // 读取按钮上的图片地址
        // 修改模态框内的图片src
        $(this).find('.modal-image').attr('src', imgUrl);
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:01:55