我想写一个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元素?
答案 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");