$(document).ready(() => {
$(".tabs-item").click(() => {
$(".tabs-item").removeClass("active");
$(this).addClass("active"); //This line is not at all working..
});
});
$(this)
根本不起作用。我一直在尝试不同的方法。
像
$("tabs-item").click(() => {
var x = $(this).attr("tab-data");
console.log(x);
});
对于我尝试的每一个属性,我所拥有的都是未定义的。
答案 0 :(得分:4)
箭头函数保留外部上下文 - this
指的是定义箭头函数的上下文。用函数声明替换箭头函数,让jQuery
绑定函数的适当上下文。
$("tabs-item").click(function(){
var x = $(this).attr("tab-data");
console.log(x);
});
或者使用箭头功能,您可以在参数中获取event
参数并访问它的currentTarget
属性。
$("tabs-item").click((event) => {
var x = $(event.currentTarget).attr("tab-data");
console.log(x);
});
更优选函数声明方法,因为没有为事件处理程序提供箭头函数。只需使用函数声明,它的上下文将绑定到适当的。
答案 1 :(得分:0)
为什么不这样做?
$(document).ready(function(){
$(".tabs-item").click(function(e){
$(".tabs-item").removeClass("active");
$(this).addClass("active");
});
});
我认为没有特别需要使用胖箭头=>
函数表示法。