Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测参数是jQuery对象_Javascript_Jquery - Fatal编程技术网

Javascript 如何检测参数是jQuery对象

Javascript 如何检测参数是jQuery对象,javascript,jquery,Javascript,Jquery,我想创建一个可以与Id一起使用或通过传递jQuery对象来使用的函数 var $myVar = $('#myId'); myFunc($myVar); myFunc('myId'); function myFunc(value) { // check if value is jQuery or string } 如何检测传递给函数的参数类型 注意

我想创建一个可以与Id一起使用或通过传递jQuery对象来使用的函数

var $myVar = $('#myId');

myFunc($myVar);
myFunc('myId');

function myFunc(value)
{
    // check if value is jQuery or string
}
如何检测传递给函数的参数类型


注意#id.myClass那样传递选择器字符串。我想像示例中那样传递jQuery对象。

使用
typeof
操作符

if ( typeof value === 'string' ) {
  // it's a string
} else {
  // it's something else
}
或者确保它是jQuery对象的实例

if ( typeof value === 'string' ) {
  // it's a string
} else if ( value instanceof $) {
  // it's a jQuery object
} else {
  // something unwanted
}

检查参数的类型还不够吗

function myfunc(arg)
{
    if(typeof arg == 'string')
    {

    }
    else if(typeof arg == 'object')
    {

    }  
}
检查此项。

尝试以下操作:

function myFunc(value)
{
   if(typeof value === 'object') {
   }
   else{
   }
}
注意:是否在控制台中执行此操作:

> jQuery
function (a,b){return new e.fn.init(a,b,h)}
> var value = jQuery
undefined
> value
function (a,b){return new e.fn.init(a,b,h)}
> value === jQuery
true

每个jquery对象都有一个属性
jquery
。当然,如果您的对象具有
jquery
属性,则此操作将失败……但是如果您需要,可以进行更严格的检查

function(o) {
    if(typeof o == 'object' && o.jquery) // it's jquery object.
}
尝试使用typeof,例如:

var $myVar = $('#myId');

myFunc($myVar);
myFunc('myId');

function myFunc( value ){
    // check if value is jQuery or string
    switch( typeof value ) {
        case 'object':
        // is object
        break;

        case 'string':
        // is string
        break;

        // etc etc.
    }
}

jQuery对象不是“jQuery选择器”;它是一个物体。选择器是一个带有CSS选择器语法的字符串。如果你想检测一个jQuery对象,那么(勒芒:检测jQuery对象的实例)就是答案。在我脑子里,只要检查变量是字符串还是对象?
值的类型
永远不会为
null
。你是说
value!=空
?@jamesalardice,是的,这就是我的意思。修好了。谢谢。这不考虑NULL,它也有Type Of=“Objt”。jQuery对象“false”=“代码> value = = jQuery < /Cord> >对于JQuery本身来说是错误的,而不是它的实例。您需要
instanceof
运算符@RGB-请注意,
typeof
是一个运算符,而不是一个函数,因此您不需要括号(括号不会引起任何问题,但没有括号可以更清楚)。嗯,是的,它有..:P但我看到你有一个解决方案:)至少快速测试表明“value instanceof$”工作正常。这就是我要找的东西。谢谢我将推广第二部分,因为它确实可以排除其他香草对象。
function(o) {
    if(typeof o == 'object' && o.jquery) // it's jquery object.
}
var $myVar = $('#myId');

myFunc($myVar);
myFunc('myId');

function myFunc( value ){
    // check if value is jQuery or string
    switch( typeof value ) {
        case 'object':
        // is object
        break;

        case 'string':
        // is string
        break;

        // etc etc.
    }
}