Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套javascript函数丢失“0”;这";_Javascript_Jquery - Fatal编程技术网

嵌套javascript函数丢失“0”;这";

嵌套javascript函数丢失“0”;这";,javascript,jquery,Javascript,Jquery,我有一个嵌套函数,它失去了“this”的适当范围 }) 我已经尝试了var that=$(this),但这不起作用,我认为。在这种情况下,调用将起作用。如何获取$(this.attr(“rel”)返回我想要的rel值,而不是未定义的?将$(此)传递给函数 tabNavClick($(this)); function tabNavClick(obj){ var that = obj; .... 此外,您还可以将函数tabNavClick作为click处理程序传递,并

我有一个嵌套函数,它失去了“this”的适当范围

})

我已经尝试了
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
return
false
来防止事件冒泡。此外,还可以使
tabNavClick
接受事件:

function tabNavClick(e) {
    // ...
    e.preventDefault();
}

您可以将
tabNavClick
本身作为单击处理程序传递:

tabNavItem.on("click", tabNavClick);
这将调用
tabNavClick
,使
This
指向单击的项目

您可以让
tabNavClick
return
false
来防止事件冒泡。此外,还可以使
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”。注意,我在我的答案中还添加了一个更简单的第二个选项,即带参数的直接函数调用。