Jquery检查函数是否没有参数执行它没有大括号

时间:2015-01-31 06:58:19

标签: jquery function plugins parameters arguments

我正在开发一个 jQuery 插件并使用这种方式来构建它。

首先这是我的插件功能:

(function($) {
    $.fn.myplugin = function(data) {
        var width = data.width || 'auto',
    };
}(jQuery));

并且我正在调用该函数来运行,例如:

$('element').myplugin({width: '100px'});

它工作得很好,但如果我调用函数没有参数&大括号,该功能不起作用,并在浏览器控制台中出错:

// Using this way
$('element').myplugin();

// Browser Console
Uncaught TypeError: Cannot read property 'width' of undefined

那么我怎样才能将这两种方式与&没有参数(花括号),像大多数插件一样工作?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以在访问其属性(例如

)之前检查data是否有值
(function($) {
    $.fn.myplugin = function(data) {
        var width = (data && data.width) || 'auto',
    };
}(jQuery));

我在某些地方使用的另一种做法是分配一个空对象,因为data的值没有像

那样传递值
(function ($) {
    $.fn.myplugin = function (data) {
        data = data || {};
        var width = data.width || 'auto';
        console.log(width)
    };
}(jQuery));