jQuery错误引用'this'

时间:2017-07-12 21:18:37

标签: jquery

这是我的代码:

$(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。我该如何引用该元素?

1 个答案:

答案 0 :(得分:3)

不使用改变其范围的ES6箭头函数,而是返回长函数形式:

$('tr').click(function(){
  alert($(this).attr('class'));
});

当然,如果你想坚持使用ES6,你应该避免this并使用事件的currentTarget属性:

$('tr').on('click', (e)=>{
   alert( $(e.currentTarget).attr('class') );
})