「this」の適切なスコープを失うネストされた関数があります
if(tabNav === true){
$("." + tabNavClass).show();
tabNavItem.first().addClass("active");//active class on first li
tabNavItem.each(function(i){
$(this).attr("rel",(i + 1));
});
tabNavItem.on("click", function(e){
tabNavClick();
//this works, but i don't want it defined here. i want it in the tabNavClick() function
//var data = $(this).attr("rel");
//console.log(data);
e.preventDefault();
});
}
//tab nav function
function tabNavClick(){
// REGISTERS UNDEFINED HERE B/C LOSES SCOPE OF "THIS". FIX?!
var that = $(this);
var data = that.attr("rel");
console.log(data);
tabNavItem.removeClass("active");//remove existing active class
};
試してみvar that = $(this)
ましたが、うまくいきません。このシナリオでは .call が機能するとは思いません。$(this).attr("rel");
の代わりに必要な rel # 値を返すにはどうすればよいundefined
ですか?