"这"关键字在jquery函数内部不起作用

时间:2016-11-04 04:26:08

标签: javascript jquery

我想使用"这个"我的jquery函数中的关键字,但它对我不起作用......

我尝试过以下方法:

1 ... 不起作用......

function getRequest() {

      var ReqPlace = $(this).parent('div.reqHere').parent('div.allReqs').children('div.reqHere');
}

2 .. 不起作用......

var that=this;   //also tried var that=$(this);

function getRequest() {

      var ReqPlace = $(that).parent('div.reqHere').parent('div.allReqs').children('div.reqHere');
}

3 .. 工作,但这次我使用了一个按钮

<input type="button" onclick="getRequest(this);" />

function getRequest(that) {

      var ReqPlace = $(that).parent('div.reqHere').parent('div.allReqs').children('div.reqHere');
}
  

上面的第3步工作得很好,但我不需要按钮有没有其他方法可以使用&#34;这个&#34;功能内的关键字

由于

2 个答案:

答案 0 :(得分:1)

这个返回调用它的对象的实例。

在你的情况下,它在语句1 中不起作用,因为出于某种原因你无处不在地调用了这个并且返回了函数的实例,这就是为什么它不工作

同样适用于声明2 考虑声明

var that = this;

如果这是在函数中,那么也将返回一个函数,这就是它无法正常工作的原因。

最后语句3 的原因是它返回元素的html对象实例,因为该函数是元素的单击事件监听器。请注意,使用语句3 在函数中调用 this 也可以。

你总是可以在一个函数中使用 this ,但要记住

$(query)
jQuery(query)

其中查询是HTMLObject或html字符串或css选择器字符串,使用函数发送它会导致错误。

如果你想在函数

中做这样的代码
$(this).parent('div.reqHere').parent('div.allReqs').children('div.reqHere');

除非是HTML对象,否则您应该做的是:

<div class='somedivinyourtemplate' id='hello'>
</div>

function () {
    $('#hello').parent('div.reqHere')
        .parent('div.allReqs').children('div.reqHere')
}

或只是简单地输入您要选择的元素的ID。

希望能帮助您了解其工作原理

答案 1 :(得分:-1)

如果你想使用&#34;这个&#34;在jquery

为按钮

提供ID
$ionicLoading

然后

    .controller('myCtrl', function($scope, $ionicLoading) {

   $scope.showLoading = function() {
      $ionicLoading.show({
         template: 'Loading...'
      });
   };

   $scope.hideLoading = function(){
      $ionicLoading.hide();
   };
});