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

时间:2011-02-17 20:14:45

标签: 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元素?

4 个答案:

答案 0 :(得分:21)

反过来检查是否更容易 - 检查它是否为字符串,如果是这样,请使用它来获取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抽象接口。 Check MDC了解有关HTMLElement的更多信息。

    ...

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

    ...

最后,你的电话真的不重要!

汤姆

答案 1 :(得分:6)

你可以像这样实现你的功能:

function myfunction(myinput){

 if (myinput.nodeType){
    var myID = $(myinput).attr('id');
 } else {
    var myID = myinput;
 }

 // Do stuff with myID ...

}

有关nodeType的更多信息。

答案 2 :(得分:0)

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

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

答案 3 :(得分:-2)

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