【问题标题】:How to reference jQuery object inside of it's own method call?如何在它自己的方法调用中引用 jQuery 对象?
【发布时间】:2012-01-19 04:49:14
【问题描述】:

我正在尝试这样做:

$('.summary').css('top',$(this).outerHeight());

在我引用 'this' 的地方,我想引用 jquery 当前正在与之交谈的 $('.summary') 的实例,因为有多个,但范围认为此实例中的页面是 'this'。

在这种情况下引用每个元素的最简单方法是什么?

我搜索了这个问题的答案,但不太了解正确的措辞。如果已回答,请告诉我,我可以作为副本关闭。

谢谢!

【问题讨论】:

  • 猜你对声明变量的想法感到很抗拒?

标签: javascript jquery scope


【解决方案1】:

您可以将函数直接传递给.css()

$('.summary').css('top',function() {
    return $(this).outerHeight();
});

它将迭代元素,返回值将是'top'的新值。

【讨论】:

    【解决方案2】:

    我想你正在寻找.each()

    $('.summary').each(function() {
        var $this = $(this);
        $this.css('top', $this.outerHeight());
    });
    

    编辑: 减少重新查询。另外,我更喜欢am not i am 的回答。它稍微优雅一些​​。

    【讨论】:

    • 你正在重新查询你已经拥有的东西。您应该存储对第一个查询的引用并稍后使用它。但是,如果您要这样做,那么您将得到一个不必要的冗长版本的 Lawson Kurtz 的答案。
    • 非常感谢。 FWIW,它可以省略顶部属性上的单位,但我相信你的方式是最佳实践。
    【解决方案3】:

    你应该先将它定义为一个变量,然后你可以在方法中引用它:

    var summary = $('.summary');
    summary.css('top',summary.outerHeight());
    

    【讨论】:

    • 因为这是一个类并且可以代表多个元素,所以这是不可靠的。
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 2013-02-23
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多