1

我正在尝试获取的 ID,item1但它没有在下面的代码中返回 ID。有没有办法获取更高级别函数的 ID?

我假设代码正在尝试获取的 ID,popup但这既不需要也不存在。我可以获取更高级别函数的 ID,还是可以将其作为参数传递给较低级别​​的函数?

$(".item1").live ("click" ,function(){
    $('.popup_pre_loading').css('display','none');
        $('.popup').fadeIn( 800, function(){
        alert((this).attr('id'));//need this for URL param
      });
      return false;
});

请注意,当警报框直接位于item' 函数中时,此代码有效。

4

3 回答 3

7

只需this在外部函数中存储一个引用,并在内部函数中引用它。

$(".item1").live ("click" ,function() {
    var self = this;
    $('.popup_pre_loading').css('display','none');
    $('.popup').fadeIn( 800, function(){
        alert(self.id);
    });
    return false;
});

请注意,您不需要$(self).attr('id')- 只是self.id会做!

于 2012-04-27T13:30:02.600 回答
3

根据您的理解,当它直接在item's 函数中时它可以工作,我猜您在fadeIn函数中需要它。最简单的方法是将其分配给函数中的变量,并在click函数中使用该变量fadeIn

$(".item1").live ("click" ,function(){
    var item1id = $(this).attr('id');
    $('.popup_pre_loading').css('display','none');
        $('.popup').fadeIn( 800, function(){
        alert(item1id); //need this for URL param
      });
      return false;
});
于 2012-04-27T13:30:11.260 回答
2
$(".item1").live ("click" ,function(){
    var $item1 = $(this);
    $('.popup_pre_loading').css('display','none');
    $('.popup').fadeIn( 800, function(){
        alert((this).attr('id'));//need this for URL param
        alert($item1.attr('id'));
      });
      return false;
});
于 2012-04-27T13:30:07.610 回答