首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery自定义函数

jQuery自定义函数
EN

Stack Overflow用户
提问于 2013-02-27 18:39:25
回答 2查看 589关注 0票数 0

为什么oldHeight的值没有被覆盖?它仍然有80oldHeight,而不是我作为参数传递的东西。即使我传递了参数newHeight,它也不会覆盖它。但根据documentation的说法,它会自动更新。代码如下:

代码语言:javascript
复制
( function($) {
$.fn.bad = function(callback) {
    var options;
    var settings = $.extend({
        "oldHeight":"80",
        "newHeight":"200"
    }, options);
    return this.each( function() {
        var that$ = $(this);
        that$.bind("mouseenter", function() {
            $(this).animate({ "height" : settings.newHeight+"px" });
        }).bind("mouseleave", function() {
            $(this).animate({ "height" : settings.oldHeight+"px" });
        });
    });
}
})(jQuery);
$(".box").bad({"oldHeight":"400"});

这个===> Fiddle

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-27 18:45:28

您使用var options;将"options“初始化为null,并使用空值扩展您的设置。

代码语言:javascript
复制
( function($) {
    $.fn.bad = function(options) {
            var settings = $.extend({
                "oldHeight":"80",
                "newHeight":"200"
            }, options);

    ...

这是可行的。

票数 1
EN

Stack Overflow用户

发布于 2013-02-27 18:51:00

试试这个,

代码语言:javascript
复制
var settings = {};
var settings = $.extend(settings, {
    "oldHeight":"80",
    "newHeight":"200"
}, options);

您的函数需要接受options,而不是callback (如果没有使用回调)。

所以你的代码将是,

代码语言:javascript
复制
(function($) {
$.fn.bad = function(options) {
    var settings = {};
    var settings = $.extend(settings, {
        "oldHeight":"80",
        "newHeight":"200"
    }, options);
    ...

Test

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15109944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档