javascript - 使用冒号、分号等符号将变量传递给 javascript 函数

标签 javascript jquery ajax

目前,我目前的职能是这个场景。

基本上,此 ajax 调用将生成表情符号列表,但我希望当用户单击笑脸图像时,笑脸代码将添加到消息文本框中。

例如,当用户点击微笑图片时,:-) 代码将被添加到消息框。 我的问题是,是否可以将代码 :-) 传递给函数?

在我当前的代码中,addText(' + key + ') 不起作用。 key 的值为:-)。错误提示 Uncaught SyntaxError: Unexpected token : 而当值为 ;) 错误为 Uncaught SyntaxError: Unexpected token ; 我也有 :lol: 等类似的代码。任何帮助将不胜感激。

$.ajax({
    type: "POST",
    async: true,
    cache: false,
    dataType: "json",
    url: "./assets/php/scripts.php",
    data: {command: 'get-smileys'},
    success: function (data) {
        $("#smileys").empty();
        $("#smileys").append("<br>");
        var div_obj = document.createElement("ul");
        $(div_obj).addClass('list-inline');
        $.each(data, function(key, value) {
            $(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" onclick="addText(' + key + ');"><br>' + key + '</div></li>')
            $("#smileys").append($(div_obj)); 
        });
        $("#smileys-flag").text('1');
        $("#loader-chat").hide();
    }
});

这里是添加文本部分的函数:

function addText(text){
    var fullMessage = $("#message").val();
    $("#message").val(fullMessage + text);
}

最佳答案

问题是您需要将它们作为字符串文字传递,如下所示。

'" onclick="addText(\'' + key + '\');"><br>'

但更好的解决方案是使用 jQuery 事件处理程序而不是像这样的内联处理程序

$(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img class="smileys" src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" data-smiley="' + key + '"><br>' + key + '</div></li>')

然后

jQuery(function ($) {
    $("#smileys").on('click', '.smileys', function () {
        addText($(this).data('smiley'))
    });
})

关于javascript - 使用冒号、分号等符号将变量传递给 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32835150/

相关文章:

javascript - 如何将数字添加到 jQuery 对象本身

JavaScript "Counter"对象,它是什么?

ajax - 通过 ajax 的 grails datepicker 值

javascript - Jquery .slide切换导航菜单。所有菜单都可以滑动,但我只想要一个

javascript - Javascript HTML5播放器-添加停止

javascript - 如何在多个变量中分离ajax响应以及如何调用它们?

jquery - 渲染响应不适用于 jquery ajax 请求

javascript - 通过单击复选框将一个文本框数据复制到另一个文本框中

javascript - 使用 angularjs 每次点击更改 css 属性

jquery datepicker 显示按钮单击,有没有办法确定显示状态(显示/隐藏)?