jquey动态创建dom,绑定函数,带有字符参数的问题?

"
"<li><input type='button' value='确定' class='verifition' onclick='cancelDouble("+this.index+","+this.title+")'></li>";

<li><input type='button' value='确定' class='verifition' data-cid="+this.title+" onclick='cancelDouble("+this.index+")'></li>";

本来是上面那样的,但是html编译出来,说this.title对应的字符是is not undifend,所有就只能曲线救国了,
正常下html中的函数字符串是要有引号的,数字可不用,但是jquery生成的实在是不知道在哪里加了,

阅读 3.4k
3 个回答

报错误的原因是,你拼接html的时候,把title作为一个变量传进去了,而不是一个字符串。

而如果你使用字符串冒号包裹title的话又会和html的冒号冲突,因此比较好的方式是,onclick=cancelDouble('+item.index+',"'+item.title+'") 的时候,onclick=后面的方法不要用引号包裹,然后参数就可以友好的拼接字符串,把参数当成字符串处理而不是变量

clipboard.png

    var arr = [
        { index: 0, title: 'title0' },
        { index: 1, title: 'title1' },
        { index: 2, title: 'title2' },
        { index: 3, title: 'title3' },
        { index: 4, title: 'title4' },
    ];
    var htm = '';
    arr.forEach(function(item) {
        htm+='<li><input type="button" value="确定" class="verifition" onclick=cancelDouble('+item.index+',"'+item.title+'")></li>';
    });
    $("body").html(htm);
    function cancelDouble(index,title){
        console.log(index,title)
    }

我之前写过一个row.id
status
edit都是变量


//通过\'来实现,你可以试试看

return '<a href="javascript:;" class="editcls easyui-linkbutton" data-options="toggle:true"  onclick="editStatus(\'' + row.id + '\',\'' + status + '\')">[' + edit + ']</a>';

你的this.title是什么?能给出更多一些代码吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题