代码之家  ›  专栏  ›  技术社区  ›  Sandeep Ranjan

jQuery字符串串联“+”错误

  •  1
  • Sandeep Ranjan  · 技术社区  · 6 年前

    我有一个jQuery语句

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

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

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

    未捕获的语法错误:无效或意外的标记

    然后我试着这样做

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

    我犯了这个错误

    未捕获语法错误:意外标记}

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

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

    6 回复  |  直到 6 年前
        1
  •  1
  •   void    6 年前
     $('.searchDisplay').append('<i class="ion-email" onclick="copyEmail(\''+data[i].email+'\')"></i>' );
    

    代码中的问题是。。。

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

    所以你需要包装 data[i].email 具有 ' .. ' . 我已经包好了 数据【i】。电子邮件 具有 '' 但因为已经有一对了,所以我不得不用 \ .

        2
  •  1
  •   Prasanta Bose    6 年前

    试试这个

    $('.searchDisplay').append('<i class=\"ion-email\" onclick=\"copyEmail(\"'+data[i].email+'\")\"></i>' );
    
        3
  •  1
  •   Luis Gar    6 年前

    您应该使用“\”来避免错误,因此您可以这样做:

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

    已编辑

        4
  •  1
  •   Mamun    6 年前

    您不需要包装 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>
        5
  •  0
  •   Jeremy Jones    6 年前

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

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

    或者通过选择 .searchDisplay 班 您可以使用 $(this) 在函数中确定单击了哪个。

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