jquery:测试输入变量是否为dom元素

我想编写一个jquery函数,它接受一个dom元素或它的id作为输入:

function myfunction(myinput){ // pseudocode: // if (myinput is dom element){ // var myID = $(myinput).attr('id'); // } else { // var myID = myinput; // } // Do stuff with myID ... } 

问题:如何判断myinput是否为dom元素?

反过来检查更容易 – 检查它是否是一个字符串,如果是这样,使用它来获取ID,否则将其视为一个DOM节点/元素,并像处理它一样处理它。

 function myfunction(myinput) { var myId; if (typeof myinput == 'string'){ myId = myinput; } else { myId = myinput.id; // myinput.id is enough } // do something } 

或者如果你真的要检查它是否是HTMLElement,那么每个DOM html元素都会扩展HTMLElement抽象接口。 检查MDC以获取有关HTMLElement的更多信息。

  ... if (myinput instanceof HTMLElement){ myId = myinput.id; // myinput.id is enough } else { myId = myinput; } ... 

最后它真的不重要……你的电话!

汤姆

您可以像这样实现您的function:

 function myfunction(myinput){ if (myinput.nodeType){ var myID = $(myinput).attr('id'); } else { var myID = myinput; } // Do stuff with myID ... 

}

有关nodeType的更多信息。

我想知道一个好的三元是否会起作用,就像这样

 var myID = $(myInput).attr('id') ? $(myInput).attr('id') : myInput; 

if( myinput instanceof domElement ) alert("Yes");