jQuery字符串连接'+'错误

时间:2018-03-04 09:44:52

标签: javascript jquery string-concatenation string-interpolation

我有一个jQuery语句

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

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

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

  

未捕获的SyntaxError:无效或意外的令牌

然后我尝试这样做

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

我收到了这个错误

  

未捕获的SyntaxError:意外的令牌}

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

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

5 个答案:

答案 0 :(得分:1)

试试这个

Blue

答案 1 :(得分:1)

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

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

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

所以你需要用data[i].email包裹' .. '。我已将data[i].email''包裹在一起,但由于已有一对,所以我必须使用\将其转义。

答案 2 :(得分:1)

你应该使用&#34; \&#34;为了避免错误,你可以这样做:

 public void addFragment(Fragment fragment) {
        mFragmentList.add(fragment);
    }

被修改

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

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