.append()内容包含引号和点的问题

时间:2016-10-30 09:11:06

标签: javascript jquery html quotes

我想使用.append(SOMET HTML CODE)将HTML代码添加到表中。

进入我的<tr>我想实现一个onclick()事件 - 它调用一个函数 - 但是看起来引号和内容本身存在一些问题(因为内容是一个足球运动员姓名,此名称包含一个点,如: M**.** Neuer

我的 jQuery 看起来像这样:

$('.player_table').append('<tr id="'+pos+players.id+'" costsForThisPlayer="12.2" class="goalKepperRow" onclick="addGoalkeeperByClickEvent("'+players.name+'", "gk1", 12.2)><td>something</td></tr>');

我的 HTML 看起来很奇怪

<tr id="gk149" costsforthisplayer="12.2" class="goalKepperRow" onclick="addGoalkeeperByClickEvent(" m.hitz",="" "gk1",="" 12.2)=""><td>something</td></tr>

这是崩溃的部分:

onclick="addGoalkeeperByClickEvent(" m.hitz",="" "gk1",="" 12.2)="">

我如何正确更改我的jquery部分?

1 个答案:

答案 0 :(得分:4)

您的HTML字符串包含双引号内的双引号。 您使用单引号并转义它们:

'... onclick="addGoalkeeperByClickEvent(\''+players.name+'\', \'gk1\', 12.2)"...'
// or:
'... onclick=\'addGoalkeeperByClickEvent("'+players.name+'", "gk1", 12.2);\'...'

旁注:

  1. costsForThisPlayer不是valid HTML attribute。使用data-*属性存储自定义值。
  2. 使用onClick属性is not good practice。您应该考虑使用jQuery设置.click()事件处理程序。

    由于您的内容是动态添加的,因此您必须使用.on()在桌面上委派click个事件:

    $('.player_table').on('click', `.goalKepperRow`, function(){
        var costsForThisPlayer = $(this).attr('data-costsForThisPlayer');
        var playerName = $(this).attr('data-name');
        var something = $(this).attr('data-something');
        // all the values that you're passing to the onClick function are here
        // ... the rest of your addGoalkeeperByClickEvent() method ...
    });
    

    然后你的HTML创建部分将是:

    $('<tr/>').attr({
      'id'                      : pos+players.id,
      'class'                   : "goalKepperRow",
      'data-costsForThisPlayer' : "12.2",
      'data-name'               : players.name,
      'data-something'          : "gk1"
    })
    .append('<td>something</td>')
    .appendTo('.player_table');