使用单引号传递参数

Bil*_*lla 16 javascript jquery

如何将参数传递给'包含的javascript函数

var name ="Lauren O'Donald";

var htmlAnch='<a onclick="javascript:selectEmployee(1100,"'+name+'");return false;" 
                 href="javascript:void(0);">O'Donald, Lauren</a>';

 $(document).append($(htmlAnch));
Run Code Online (Sandbox Code Playgroud)

由于名称'Lauren O'Donald'包含单引号,因此javascript函数未执行.

如何添加参数'并准备动态html以使其工作?

这是要生成的动态代码

 var rows = new StringBuffer();

 $(data).each(function(index) {
      rows.append(String.format('<tr><td><a href="No.aspx" 
                onclick="javascript:selectEmployee({3},\"{1} {2}\");return 
               false;">{0}</a></td></tr>',
                String.format("{0}, {1}", this.Surname, this.FirstName),
                this.Surname,
                this.FirstName,
                this.Id
            ));
   });
Run Code Online (Sandbox Code Playgroud)

h2o*_*ooo 32

您可以通过前缀\来转义引号/字符:

var string = 'my string with "double quotes" and \'single quotes\'';
var string = "my string with 'single quotes' and \"double quotes\"";
//                                               ^              ^
Run Code Online (Sandbox Code Playgroud)

使用动态字符串:

var foo = "bar with 'quotes'";
var string = 'my string with "double quotes" and ' + foo.replace(/'/g, "\\'");
//my string with "double quotes" and bar with \'quotes\'
Run Code Online (Sandbox Code Playgroud)


Ror*_*san 6

你可以使用\:

var htmlAnch='<a onclick="javascript:selectEmployee(1100,\'Lauren O\'Donald\');return false;" 
             href="javascript:void(0);">O\'Donald, Lauren</a>';
Run Code Online (Sandbox Code Playgroud)

但是,当您使用jQuery标记此问题时,更好的解决方案是将事件连接到元素并使用data-*属性来存储相关信息,这将避免使用丑陋的onX属性.试试这个:

var $htmlAnch = $('<a />' {
    text: "O'Donald, Lauren" ,
    data-id: 1100,
    data-name: "Lauren O'Donald"
}).click(function(e) {
    e.preventDefault();
    selectEmployee($(this).data('id'), $(this).data('name'));
});

$(document).append($htmlAnch);
Run Code Online (Sandbox Code Playgroud)