函数.swap()是否有用?

时间:2011-10-27 19:25:31

标签: jquery

浏览1.7rc1第6625行的来源,我找到了.swap函数:

// A method for quickly swapping in/out CSS properties to get correct calculations
swap: function( elem, options, callback ) {
    var old = {};

    // Remember the old values, and insert the new ones
    for ( var name in options ) {
        old[ name ] = elem.style[ name ];
        elem.style[ name ] = options[ name ];
    }

    callback.call( elem );

    // Revert the old values
    for ( name in options ) {
        elem.style[ name ] = old[ name ];
    }
}

我以前从未见过它。人们真的使用它吗?为了什么?

1 个答案:

答案 0 :(得分:1)

.swap(elem, options, callback)是一个临时设置多个CSS值(在第二个参数的对象中传递的值),调用回调(第三个参数)然后在回调返回后恢复原始CSS值的函数。

jQuery使用它来临时更改事物的布局以进行一些测量。例如,如果你取一个div对象并将它设置为position: absolute,你将能够得到它的真实宽度,但是如果它在文档的正常布局中,则div获取它的容器宽度。如果您通过jQuery调用.width()或查看该函数是如何在源代码中实现的,您将看到它被使用。

我确信你可以发明/找到其他东西来使用它,但除了jQuery使用它的测量类型之外,我还没有找到它。