jQuery 字符串连接 '+' 错误

jQuery String concatenation '+' error

我有一个jQuery声明

 $('.searchDisplay').append('<i class="ion-email" onclick="copyEmail('+data[i].email+')"></i>' );

在这里,如果我单击此图标,则会调用此函数 copyEmail(),它将字符串作为参数并将其添加到剪贴板。

但是当我点击图标时,我的控制台出现错误

Uncaught SyntaxError: Invalid or unexpected token

然后我尝试这样做

$('.searchDisplay').append('<i class="ion-email" onclick="copyEmail("'+data[i].email+'")"></i>' );

我遇到了这个错误

Uncaught SyntaxError: Unexpected token }

问题是我无法在函数中传递字符串。

有人可以帮我解决这个问题吗?

试试这个

$('.searchDisplay').append('<i class=\"ion-email\" onclick=\"copyEmail(\"'+data[i].email+'\")\"></i>' );
 $('.searchDisplay').append('<i class="ion-email" onclick="copyEmail(\''+data[i].email+'\')"></i>' );

您的代码中的问题是...

当您使用字符串作为参数调用函数时 someFunction('somestring');,在您的代码中您缺少 '' 包装字符串。

所以你需要用 ' .. ' 包裹 data[i].email。我已经用 '' 包裹了 data[i].email 但因为已经有一对所以我不得不用 \ 来逃避它。

你应该使用“\”来避免错误,所以你可以这样做:

$('.searchDisplay').append('<i class="ion-email"  onclick="copyEmail(\''+data[i].email+'\')"></i>' )

已编辑

$('.searchDisplay').append(`<i class="ion-email" onclick="copyEmail('${data[i].email}')"></i>`);

你最好给它一个 id 或另一个标识属性,然后在附加它之后添加 onClick 处理程序,当它在 DOM 中可用时,按照以下行:

$('.searchDisplay').append('<i id="num' + i + '" class...></i>');
$('#num' + i).on('click', 
                 function () {
                     ...
                 });

或者通过选择 .searchDisplay class 一次挂接到所有这些。 您可以在函数中使用 $(this) 来确定点击了哪一个。

您根本不需要在函数参数中用 '+ +' 包装 data[i].email

$('.searchDisplay').append('<i class="ion-email" onclick="copyEmail(data[i].email)"></i>' );

var data = [{'email': '123@gmail.com'}, {'email': 'xyz@gmail.com'}];
var i = 1;
$('.searchDisplay').append('<i class="ion-email" onclick="copyEmail(data[i].email)">Click To Test</i>' );

function copyEmail(email){
  console.log(email);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="searchDisplay"></div>