jquery: проверить, является ли входная переменная элементом dom - PullRequest
11 голосов
/ 17 февраля 2011

Я хотел бы написать функцию jquery, которая принимает либо элемент dom, либо его идентификатор в качестве входных данных:

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 ]

21 голосов
/ 17 февраля 2011

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

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

6 голосов
/ 17 февраля 2011

Вы бы реализовали свою функцию так:

function myfunction(myinput){

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

 // Do stuff with myID ...

}

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

0 голосов
/ 18 февраля 2011

Интересно, сработает ли хорошая тройка, как-то так

var myID = $(myInput).attr('id') ? $(myInput).attr('id') : myInput;
0 голосов
/ 17 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...