10

IdまたはjQueryオブジェクトを渡すことで使用できる関数を作成したいと思います。

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

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

function myFunc(value)
{
    // check if value is jQuery or string
}

関数に渡された引数の種類をどのように検出できますか?

ノート! この質問は同じではありません。のようなセレクター文字列を渡したくありません#id.myClass。例のようにjQueryオブジェクトを渡したい。

4

7 に答える 7

18

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
}
于 2012-05-23T14:03:09.177 に答える
3

すべてのjqueryオブジェクトにはプロパティがありますjquery。もちろん、オブジェクトにjqueryプロパティがある場合、これは失敗します...ただし、必要に応じて、より厳密なチェックを行うことができます...

function(o) {
    if(typeof o == 'object' && o.jquery) // it's jquery object.
}
于 2012-05-23T14:06:21.253 に答える
1
function myFunc(value)
{
   if (typeof value == "string") {
      //it's a string
   }
   else if (value != null && typeof value == "object"} {
      //it's an object (presumably jQuery object)
   }
   else {
      //it's null or something else
   }


}
于 2012-05-23T14:04:08.273 に答える
0

引数の型を確認するだけでは不十分でしょうか?

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

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

    }  
}

このフィドルを確認してください。

于 2012-05-23T14:03:37.737 に答える
0

これを試して:

function myFunc(value)
{
   if(typeof value === 'object') {
   }
   else{
   }
}
于 2012-05-23T14:04:28.733 に答える
0
function myFunc(value)
{
  if(typeof(value) == 'string')
    //this is a string
  else if (value === jQuery)
    //this is jQuery
  else if (typeof(value) == 'object')
    //this is an object
}

注:これはコンソールで行いました:

> 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
于 2012-05-23T14:04:31.993 に答える
0

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.
    }
}
于 2012-05-23T14:06:38.183 に答える