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

jquery: test whether input variable is dom element

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

1
2
3
4
5
6
7
8
9
10
11
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节点/元素并将其处理为就像它一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
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的更多信息。

1
2
3
4
5
6
7
8
9
    ...

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

    ...

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

汤姆


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

1
2
3
4
5
6
7
8
9
function myfunction(myinput){

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

 // Do stuff with myID ...

}

有关nodeType的更多信息。


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

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

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