在我的 beforeSend 函数中,我有这个
$.myloader.show();
但是有些脚本没有那个元素,所以我的这一行给了我错误
$.myloader.show();
给我错误 $.myloader 不存在
我该怎么做
if($.myloader exists)
$.myloader.show();
在我的 beforeSend 函数中,我有这个
$.myloader.show();
但是有些脚本没有那个元素,所以我的这一行给了我错误
$.myloader.show();
给我错误 $.myloader 不存在
我该怎么做
if($.myloader exists)
$.myloader.show();
最通用和最可靠的解决方案是:
if (typeof $.myloader != 'undefined') {
如果您确定您的变量不能包含除函数或未定义的任何其他内容,则可以使用
if ($.myloader) {
但只有在您确定可能的值时才这样做,因为此测试也匹配false
, 0
和''
.
您可以按照以下方式进行...
if(typeof $.myloader != 'undefined')
{ // your code here. };
未定义的值是“假的”,并在 if 语句中评估为假,因此您只需要:
if( $.myloader )
$.myloader.show();
鉴于 jQuery ( $
) 是一个对象:
if ($.hasOwnProperty('myloader'))
{
//should work
//try: $.hasOwnProperty('fn'), it'll return true, too
}
如果myloader
对象没有直接绑定到 jQuery 对象,而是通过其原型之一:
if ('myloader' in $)
{
//works, like:
if ('hasOwnProperty' in $)
{//is true, but it's not a property/method of the object itself:
console.log($.hasOwnProperty('hasOwnProperty'));//logs false
}
}
您可以以相同的方式检查要使用的方法:
if ('myloader' in $ && 'show' in $.myloader)
{
$.myloader.show();
}
您可以更短地执行此操作:
$.myloader.show() ? console.log('yep') : console.log('nope');
或者:
$.myloader.show() || console.log('fail');
如果你想要它简短,你也可以这样做:
$.myloader && $.myloader.show();
第一个操作数(在 && 之前)称为警卫。但是有些人认为这不够可读和安全,因此您可能想要使用该if (typeof ...)
解决方案。