layui中layer.photo动态添加的图片,每次弹出上一张添加的图

本文介绍如何在layui 2.5及以上版本中修改layer.js源码,调整h()函数的调用位置,以优化图片预览功能的交互流程。通过对比修改前后的代码实现,帮助开发者理解并掌握这一技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

layui版本:2.5以上

修改layer.js源码,注意h(); 调用位置

 修改前:

if (n || p.on("click", t.img,
function() {
    var e = i(this),
    n = e.attr("layer-index");
    r.photos(i.extend(t, {
        photos: {
            start: n,
            data: u,
            tab: t.tab
        },
        full: t.full
    }), !0)
    h();
}), !n) return

修改后:

if (n || p.on("click", t.img,
function() {
    h();
    var e = i(this),
    n = e.attr("layer-index");
    r.photos(i.extend(t, {
        photos: {
            start: n,
            data: u,
            tab: t.tab
        },
        full: t.full
    }), !0)
}), !n) return

 

### 动态创建Checkbox并与表单提交绑定 为了实现在Layui `layer.open` 弹出层中动态添加 `checkbox` 并将其与表单提交绑定,可以按照如下方式操作: #### 准备工作 确保已经正确引入了 Layui 插件[^3]。 ```html <link rel="stylesheet" href="./layui/css/layui.css"> <script src="./layui/layui.js"></script> ``` #### 创建HTML结构 定义一个用于显示弹出层的基础 HTML 结构。这里使用了一个 div 容器来承载整个表单内容,并设置了类名 `layui-form` 来启用 Layui 表单样式[^2]。 ```html <div id="popupForm" style="display:none;"> <form class="layui-form" action=""> <!-- checkbox 将在此处动态生成 --> <div id="dynamicCheckboxes"></div> <button type="submit" class="layui-btn">提交</button> </form> </div> ``` #### JavaScript逻辑 通过JavaScript 实现动态加载 `checkbox` 和处理表单提交事件。当调用 `layer.open()` 方法打开新窗口时,可以在回调函数内执行必要的 DOM 操作以插入新的输入控件;同时监听表单的 submit 事件以便捕获用户提交的数据[^1]。 ```javascript // 初始化 layui 组件 layui.use(['layer', 'form'], function(){ var layer = layui.layer; var form = layui.form; // 打开弹出层并初始化数据 layer.open({ title: '选择项', content: $('#popupForm').html(), success: function(layero, index){ // 假设我们有一组选项列表 let options = ['Option A', 'Option B', 'Option C']; // 遍历这些选项并将它们转换成 Checkbox 控件 $.each(options, function(i, optionText){ $(`<input type="checkbox" name="options[]" value="${optionText}" title="${optionText}"><br>`).appendTo('#dynamicCheckboxes'); }); // 更新表单渲染状态 form.render('checkbox'); // 提交表单时触发的动作 $('form.layui-form').on('submit', function(e){ e.preventDefault(); // 阻止默认行为 // 获取选中的值 const selectedValues = []; $("input[name='options[]']:checked").each(function() { selectedValues.push($(this).val()); }); console.log(selectedValues); // 输出已勾选的内容到控制台 // 关闭当前弹窗 layer.close(index); }); } }); }); ``` 上述代码展示了如何在 Layer 弹出层内部构建带有可交互性的复选框,并且能够响应用户的点击动作收集所做选择的信息。注意这里的 `$.each` 是 jQuery 的语法糖,如果项目不依赖于 jQuery,则需替换为原生 JS 或其他库的方法实现相同功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值