【问题标题】:syntax error jquery single quote语法错误 jquery 单引号
【发布时间】:2017-07-27 12:29:42
【问题描述】:

我有这样的 jquery 代码,但是当我单击图像 share 时,它不起作用。 输入单引号我错了吗?

onClick="window.plugins.socialsharing.share('+my_var+')"

var my_var="";
my_var="Hello World";

$('#info_detail').append('<table border="0"><tr><td><img src="favourite.png" onClick="
      set_favorit('+employee.info_id+')"></td><td><img src="share.png" onClick="
      window.plugins.socialsharing.share('+my_var+')"></td></tr></table>'); 

谢谢

【问题讨论】:

    标签: javascript jquery tags


    【解决方案1】:

    问题是因为my_var 是一个字符串,因此您需要在输出中将其用转义引号括起来。 employee.info_id 值也可能如此:

    $('#info_detail').append('<table border="0"><tr><td><img src="favourite.png" onClick="
      set_favorit(\'' + employee.info_id + '\')"></td><td><img src="share.png" onClick="
      window.plugins.socialsharing.share(\'' + my_var + '\')"></td></tr></table>'); 
    

    但您应该注意,on* 事件属性已经过时了,应该将其删除,取而代之的是不显眼的事件处理程序,如下所示:

    $('#info_detail').append('<table border="0"><tr><td><img src="favourite.png" data-info-id="' + employee.info_id + '" class="favorit" /></td><td><img src="share.png" data-share="' + my_var + '" class="share"></td></tr></table>'); 
    
    $('#info_detail').on('click', '.favorit', function() {
      set_favorit($(this).data('info-id'));
    }).on('click', '.share', function() {
      window.plugins.socialsharing.share($(this).data('share'));
    });
    

    【讨论】:

    • ("' + my_var + '") 仍然会干扰来自 onClick 属性的引号。应该是(\'' + my_var + '\')
    • @SvenTheSurfer 有点菜鸟,不是吗!谢谢你告诉我。
    • 谢谢你们 Rory 和 Sven ..(\'' + my_var + '\') 它现在可以工作了
    【解决方案2】:

    您对共享图像的 onClick 呈现不正确。

    onClick="window.plugins.socialsharing.share('+my_var+')"
    

    my_var = "Hello World"变成

    onClick="window.plugins.socialsharing.share(Hello World)"
    

    这不仅因为空格而无效,而且还因为它没有像您假设的那样作为字符串传递。这可以通过在my_var = "'Hello World'" 中添加单引号来解决。在 HTML 本身之外添加点击处理程序可能会更好。

    【讨论】:

      【解决方案3】:

      var my_var="Hello World",
          employee = 'demo';
      
      $('#info_detail').append('<table border="0"><tr><td><img src="favourite.png" data-info-id="' + set_favorit(employee) + '" class="favorit" /></td><td><img src="share.png" data-share="' + myVar(my_var) + '" class="share"></td></tr></table>'); 
      
      function set_favorit(a) {
      console.log(a)
      }
      
      function myVar(b) {
      console.log(b)
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      
      <div id="info_detail"></div>

      由于我没有那个窗口功能,所以我添加了一些自定义功能。请检查。

      【讨论】:

        【解决方案4】:

        尝试从我尝试运行代码的语句中删除两个单引号,删除它在我身上起作用的引号。

        这里是代码。

        var my_var="";
        

        my_var="Hello World";

        var 员工 = { info_id: 10 }

        $('#info_detail').append('<table border="1"><tr><td><img src="favourite.png" onClick="set_favorit('+employee.info_id+')"></td><td><img src="share.png" onClick="alert(my_var)"></td></tr></table>'); 
        

        【讨论】:

        • 这将导致 my_var 在单击时被评估,这可能不是 OP 想要的。
        • 可能,但是如果您要附加这些行并希望,例如,每个行在单击时都有唯一的输出,那么仅使用变量将不起作用。它们都将具有相同的输出。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多