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?

Ответ 1

Проще сделать проверку наоборот - проверьте, если это строка, если она использует ее, чтобы получить идентификатор else, рассматривая его как элемент DOM node/и обрабатывать его, как если бы он был одним.

function myfunction(myinput) {

    var myId;

    if (typeof myinput == 'string'){
        myId = myinput;
    } else {
        myId = myinput.id; // myinput.id is enough
    }

    // do something

}

или если вы действительно хотите проверить, если он HTMLElement, то каждый элемент html DOM расширяет абстрактный интерфейс HTMLElement. Проверить MDC для получения дополнительной информации об HTMLElement.

    ...

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

    ...

В конце концов, это не имеет значения... ваш звонок!

Tom

Ответ 2

Вы бы выполнили свою функцию следующим образом:

function myfunction(myinput){

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

 // Do stuff with myID ...

}

Дополнительная информация о nodeType.

Ответ 3

Интересно, будет ли хороший троянец работать, что-то вроде этого

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

Ответ 4

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