这是我的代码:
$(document).ready(() => {
$.getJSON("./data/journeys.json", (data) => {
$.each(data, (i, journey) => {
$("#journeyListings > tbody").append("<tr class='journeyOrder_" + journey.order + "'>" +
"<td>" + journey.originStation + "</td>" +
"<td>" + journey.destinationStation + "</td>" +
"<td>" + journey.startTime + "</td>" +
"<td>" + journey.arrivalTime + "</td>" +
"</tr>")
});
$("tr").on("click", () => {
alert($(this).attr("class"));
});
});
});
在'click'方法中,我试图引用刚刚单击的行(tr
)。当我引用$(this)
时,似乎我指的是ajax getJson
方法,因为我在警报中收到了undefined
。我该如何引用该元素?
答案 0 :(得分:3)
不使用改变其范围的ES6箭头函数,而是返回长函数形式:
$('tr').click(function(){
alert($(this).attr('class'));
});
当然,如果你想坚持使用ES6,你应该避免this
并使用事件的currentTarget
属性:
$('tr').on('click', (e)=>{
alert( $(e.currentTarget).attr('class') );
})