嵌套javascript函数丢失“0”;这";
我有一个嵌套函数,它失去了“this”的适当范围 }) 我已经尝试了嵌套javascript函数丢失“0”;这";,javascript,jquery,Javascript,Jquery,我有一个嵌套函数,它失去了“this”的适当范围 }) 我已经尝试了var that=$(this),但这不起作用,我认为。在这种情况下,调用将起作用。如何获取$(this.attr(“rel”)返回我想要的rel值,而不是未定义的?将$(此)传递给函数 tabNavClick($(this)); function tabNavClick(obj){ var that = obj; .... 此外,您还可以将函数tabNavClick作为click处理程序传递,并
var that=$(this)
,但这不起作用,我认为。在这种情况下,调用将起作用。如何获取$(this.attr(“rel”)
返回我想要的rel值,而不是未定义的?将$(此)
传递给函数
tabNavClick($(this));
function tabNavClick(obj){
var that = obj;
....
此外,您还可以将函数tabNavClick作为click处理程序传递,并获取事件
tabNavItem.on("click",tabNavClick)
function tabNavClick(e){
e.preventDefault();
var that=$(this);
}
将$(this)
传递给函数
tabNavClick($(this));
function tabNavClick(obj){
var that = obj;
....
此外,您还可以将函数tabNavClick作为click处理程序传递,并获取事件
tabNavItem.on("click",tabNavClick)
function tabNavClick(e){
e.preventDefault();
var that=$(this);
}
您可以将tabNavClick
本身作为单击处理程序传递:
tabNavItem.on("click", tabNavClick);
这将调用tabNavClick
,使This
指向单击的项目
您可以让tabNavClick
returnfalse
来防止事件冒泡。此外,还可以使tabNavClick
接受事件:
function tabNavClick(e) {
// ...
e.preventDefault();
}
您可以将tabNavClick
本身作为单击处理程序传递:
tabNavItem.on("click", tabNavClick);
这将调用tabNavClick
,使This
指向单击的项目
您可以让tabNavClick
returnfalse
来防止事件冒泡。此外,还可以使tabNavClick
接受事件:
function tabNavClick(e) {
// ...
e.preventDefault();
}
如果希望tabNavClick()
具有所需的此
值,则需要在调用该值时指定:
tabNavItem.on("click", function(e){
tabNavClick.call(this);
//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();
});
函数的调用方式决定了该值的。如果它不是一个方法调用,并且您没有使用.call()
或.apply()
,则此
将在任何函数调用时重置。在这种情况下,您可以使用tabNavClick.call(this)
使this
值成为您想要的值
当然,您只需更改tabNavClick
,即可获取要操作的对象的参数:
tabNavItem.on("click", function(e){
tabNavClick(this);
//this works, but i don't want it defined here. i want it in the tabNavClick() function
e.preventDefault();
});
//tab nav function
function tabNavClick(obj){
var data = $(obj).attr("rel");
console.log(data);
}
如果希望tabNavClick()
具有所需的此
值,则需要在调用该值时指定:
tabNavItem.on("click", function(e){
tabNavClick.call(this);
//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();
});
函数的调用方式决定了该值的。如果它不是一个方法调用,并且您没有使用.call()
或.apply()
,则此
将在任何函数调用时重置。在这种情况下,您可以使用tabNavClick.call(this)
使this
值成为您想要的值
当然,您只需更改tabNavClick
,即可获取要操作的对象的参数:
tabNavItem.on("click", function(e){
tabNavClick(this);
//this works, but i don't want it defined here. i want it in the tabNavClick() function
e.preventDefault();
});
//tab nav function
function tabNavClick(obj){
var data = $(obj).attr("rel");
console.log(data);
}
看起来tabNavClick
已经像click处理程序一样编写,所以为什么不将其注册为click处理程序呢?:)@杰克,老实说,我不知道我在做什么。我正在尝试写我的第一个插件。我知道什么是点击处理程序,但在这种情况下注册它对我有什么帮助?我在回答中已经解释过了。看起来tabNavClick
已经像点击处理程序一样编写,所以为什么不注册它呢?:)@杰克,老实说,我不知道我在做什么。我正在尝试写我的第一个插件。我知道什么是点击处理程序,但在这种情况下注册它对我有什么帮助?我在回答中已经解释过了。@jfriend00这和bipen的回答都有效。非常感谢。我不认为我可以使用。在这里调用b/c我看到的所有使用它的示例只显示它被用于原型继承示例中。你有什么好的资源,我可以阅读,以获得更好的理解。电话。我是新来的,正如你所知道的,我对它没有很好的把握。@heyjohnmurray-MDN通常是我第一次寻找推荐人。看见它可以用于任何函数调用。你可以在谷歌的MDN上搜索任何东西,搜索方式如下:“MDN.call”。注意,我在我的答案中还添加了一个更简单的第二个选项,它只是一个带参数的直接函数调用。@jfriend00这和bipen的答案都有效。非常感谢。我不认为我可以使用。在这里调用b/c我看到的所有使用它的示例只显示它被用于原型继承示例中。你有什么好的资源,我可以阅读,以获得更好的理解。电话。我是新来的,正如你所知道的,我对它没有很好的把握。@heyjohnmurray-MDN通常是我第一次寻找推荐人。看见它可以用于任何函数调用。你可以在谷歌的MDN上搜索任何东西,搜索方式如下:“MDN.call”。注意,我在我的答案中还添加了一个更简单的第二个选项,即带参数的直接函数调用。