在jQuery中测试id是在表中还是在列表中

在jQuery中测试id是在表中还是在列表中,jquery,list,Jquery,List,我知道通常情况下,你可能需要发布一些代码来展示你的工作和其他东西,但这是一个我不能真正展示代码的问题 我正在编写一个jQuery插件,我希望测试收到的id是否在表或列表中 我现在正在做的是设置一个名为type的变量,并将其发送到我的插件中 像这样: "#tablename".mr_slider({type:"list",effect:"delete"}); 我想做的是删除type:变量,让我的插件确定它是使用表还是列表。您可以使用is()方法确定元素的类型。试试这个: if ($('#myEl

我知道通常情况下,你可能需要发布一些代码来展示你的工作和其他东西,但这是一个我不能真正展示代码的问题

我正在编写一个jQuery插件,我希望测试收到的id是否在表或列表中

我现在正在做的是设置一个名为type的变量,并将其发送到我的插件中

像这样:

"#tablename".mr_slider({type:"list",effect:"delete"});

我想做的是删除type:变量,让我的插件确定它是使用表还是列表。

您可以使用
is()
方法确定元素的类型。试试这个:

if ($('#myElement').is('table')) {
    console.log('I am a table!');
}
如果要检查元素是否在表中,可以使用
closest()

试一试


这是我问题的答案

if ($('#myElement').is('table')) {
    console.log('I am a table!');
}
用于检查桌子,以及

if ($('#myElement').is('ul')) {
    console.log('I am an unordered list!');
}
要检查无序列表

当您的id在表或列表中时,您可以像这样使用
.parents()

checkElement("t2");

function checkElement(id) {
      var elems = $("#" + id).parents();
      for(i=0; i<=elems.length;i++){      
        if($(elems[i]).is('table')) {
            console.log("Table Found");
            alert("Table Found");
        } else if($(elems[i]).is('ul')) {
            console.log("UL Found");
            alert("UL Found");
        } else {
        console.log("Other Element Found");
      }
   } 
}
checkElement(“t2”);
函数检查元素(id){
var elems=$(“#”+id).parents();

对于(i=0;iI think OP不想检查元素本身,而是想检查它是否嵌套在列表或表中–因此它需要在DOM树上检查祖先,并查看首先出现的是什么,列表或表元素
方法会起作用-您只需要遍历DOM以找到要测试的相关元素。不过,我更新了我的答案,以在不遍历DOM的情况下进行检查。我不认为
最接近的
是最佳选择,至少在表中包含列表等文档结构的情况下是如此。我可能会选择
('ul,table')
,然后查看第一个匹配的元素类型(如果有的话)。不幸的是,没有看到实际的HTML结构,这都是猜测。是的,当然。但我认为我们给了OP足够的选项,现在可以从中获得一些东西:-)谢谢Rory McCrossan。你已经回答了我一半的问题。你的第一个答案很有效,所以我知道如何检查表,但是列表呢。我尝试了if($('#myElement')。is('list'))但这似乎不起作用。@ThomasWilliams你所说的列表到底是什么意思,它是
ul
li
select
还是
ol
?你好,void,谢谢你给我解决这个问题的线索。我没有放$('myElement')。而是('list'),我放了$('myElement')。是('ul吗现在我可以确定一个列表和一个表格。谢谢大家的帮助。但是我相信是罗里·麦克罗森给了我最好的答案。我不知道现在该如何结束这个问题,因为我是新来的。@ThomasWilliams只要把所有答案都标上正确的即可。:)很高兴这有帮助。
if ($('#myElement').is('ul')) {
    console.log('I am an unordered list!');
}
checkElement("t2");

function checkElement(id) {
      var elems = $("#" + id).parents();
      for(i=0; i<=elems.length;i++){      
        if($(elems[i]).is('table')) {
            console.log("Table Found");
            alert("Table Found");
        } else if($(elems[i]).is('ul')) {
            console.log("UL Found");
            alert("UL Found");
        } else {
        console.log("Other Element Found");
      }
   } 
}