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; |