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

JQuery动态生成按钮出现多余=""字符,点击失效求助

这不是jQuery的Bug,是引号嵌套的语法问题!

你遇到的多余=""是因为HTML属性的引号嵌套冲突了,和jQuery本身没关系。咱们来拆解一下问题:

当你写这段代码的时候:

$("#card").append('<div><button onclick=" edit("'+k+'")" > Edition</button> my text <br></div>');

生成的HTML会变成:

<button onclick=" edit(" 5b027d9110966772975cb2d4")"=""> Edition</button>

原因很简单:HTML里的onclick属性是用双引号"包裹的,而你在edit()里又直接用了双引号包裹k的值,浏览器会把第一个内层的"当成onclick属性值的结束标记,剩下的5b027d9110966772975cb2d4")"就会被解析成无效的属性片段,浏览器为了“修复”这个错误,就自动补了=""。

而当你用数字12的时候,因为没有引号包裹,所以不会触发这个冲突,所以能正常运行。

下面给你几个解决方案,按推荐程度排序:

1. 最佳实践:用jQuery事件绑定替代内联onclick

内联事件处理不仅容易出现引号问题,还不利于代码维护。推荐先创建元素,再单独绑定点击事件:

$.ajax({
    url: remoteURL + '?' + 'skip='+ skip + '&' + 'limit=' + limit + '&include_docs=true',
    data: {format: 'json'},
    error: function() { 
        $('#info').html('<p>An error has occurred</p>'); 
    },
    dataType: 'jsonp',
    success: function(data) { 
        console.log(data.rows); 
        data.rows.forEach(function(row) {
            var doc = row.doc;
            // 创建按钮并绑定事件
            var $button = $('<button>Edition</button>').click(function() {
                edit(doc._id);
            });
            // 构建完整的div内容
            var $div = $('<div></div>')
                .append($button)
                .append(' ' + doc.nom + '<br>');
            $("#card").append($div);
        });
    },
    type: 'GET' 
});

这种方式把结构和行为分离,彻底避免了引号冲突,后续修改事件逻辑也更方便。

2. 转义内层双引号

如果一定要用内联onclick,需要把内层的双引号转义成\",这样浏览器才会把它当成属性值的一部分:

$("#card").append('<div><button onclick=" edit(\''+data.rows[x].doc._id+'\')" > Edition</button> '+data.rows[x].doc.nom + '<br></div>');

或者反过来,外层用双引号,内层用单引号(注意字符串拼接的引号对应):

$("#card").append("<div><button onclick=' edit(\""+data.rows[x].doc._id+"\") '> Edition</button> "+data.rows[x].doc.nom + "<br></div>");

3. 使用模板字符串(ES6+)

如果你的环境支持ES6,可以用模板字符串来简化拼接,引号嵌套会更直观:

$("#card").append(`<div><button onclick="edit('${data.rows[x].doc._id}')">Edition</button> ${data.rows[x].doc.nom}<br></div>`);

总之,问题的核心就是引号没有正确嵌套导致的HTML解析错误,和jQuery无关,按照上面的方法修改就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:51:22