这是我的JS代码,我遇到的问题是标题中的问题。好像$(this)返回的是undefined .:

function load() {
    $(".inactiveTab").attr("onclick", "clickInactiveTab()");
}

function clickInactiveTab() {
    $(this).attr("class", "activeTab");
}


html如下:

<div class="inactiveTab">Tab 1</div>
<div class="inactiveTab">Tab 2</div>

最佳答案

那不是用jQuery设置事件处理程序的方式:

function load() {
  $(".inactiveTab").click(clickInactiveTab);
}


您的代码使得处理程序代码("clickInactiveTab()")将被解释为函数体。因为代码在没有任何显式上下文的情况下调用了实际的处理函数,所以this的值将为undefinedwindow(取决于您是否处于“严格”模式)。

我认为更好的做法是将处理程序设置为<body>的委托处理程序:

$("body").on("click", ".inactiveTab", clickInactiveTab);

10-07 18:37