我想使用.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部分?
答案 0 :(得分:4)
您的HTML字符串包含双引号内的双引号。 您使用单引号并转义它们:
'... onclick="addGoalkeeperByClickEvent(\''+players.name+'\', \'gk1\', 12.2)"...'
// or:
'... onclick=\'addGoalkeeperByClickEvent("'+players.name+'", "gk1", 12.2);\'...'
旁注:
costsForThisPlayer
不是valid HTML attribute。使用data-*
属性存储自定义值。使用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');