2015-05-13 164 views
9

如何检查功能是否在jquery上,但函​​数是否在另一个.js文件中?如何检查函数是否存在?

validation.js:

if ($.isFunction('payment')) { 
    $('[data-numeric]').payment('restrictNumeric'); 
    $('.cc-number').payment('formatCardNumber'); 
    $('.cc-exp').payment('formatCardExpiry'); 
    $('.cc-cvc').payment('formatCardCVC'); 
} 

这是假的,因为FUNC款项是在payments.js。

+0

可能重复[Javascript检查是否存在函数](http://stackoverflow.com/questions/1042138/javascript-check-if-function-exists) – Liam

+1

你想检查jQuery'$'是否定义了函数。防爆。 '$ .myFunc' – Tushar

+0

可能的重复http://stackoverflow.com/questions/5999998/how-can-i-check-if-a-javascript-variable-is-function-type – ambodi

回答

9

问题解决。它的工作原理:

if ($.fn.payment) { 
    //do something 
} 
+1

这也解决了我的问题:if($ .fn.redactor) – EngineerCoder

17

尝试这样

if (typeof payment === "function") 
{ 
    // Do something 
} 
+0

'如果是在jQuery的功能,但功能是在另一个.js文件' – Tushar

8

尝试查看如下例所示

if (typeof payment !== 'undefined' && $.isFunction(payment)) { 
    $('[data-numeric]').payment('restrictNumeric'); 
    $('.cc-number').payment('formatCardNumber'); 
    $('.cc-exp').payment('formatCardExpiry'); 
    $('.cc-cvc').payment('formatCardCVC'); 
} 
+0

'如果是jQuery的功能,但功能是在另一个.js文件' – Tushar

+1

文件在js @Tushar中无关紧要。 “存在”是它是否在窗口的当前范围内。 “文件”只是将对象(函数)添加到范围。你在做什么? – Liam

+0

@Liam他想检查jQuery'$'是否定义了函数。防爆。 $ .myFunc – Tushar

1

您可以检查是否存在函数使用window

例如

var fn = window['NameOfTheFunction']; 
if(typeof fn === 'function') { 
    doSomething(); 
} 

如果您在payment.js功能是一个自包含的部分功能,你需要在你的自我包含的功能添加此将其设置为使窗口对象可以“看到”它:

window.NameOfTheFunction = NameOfTheFunction; 
4
if (typeof yourFunctionName == 'function') { 
    yourFunctionName(); 
} 

它可以完美的博客。