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>
我有一个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>