有没有办法知道元素是在表格还是列表中?

时间:2013-07-25 18:21:32

标签: javascript jquery

我正在制作一个删除记录的通用删除功能,如果该元素位于<tr>内,则删除<table>,如果<li>位于<ul>内,则删除{{1}} 1}}

元素可以位于表格内的列表中,因此我需要知道哪个父元素最接近。

有没有办法使用jQuery找到它?

6 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要这样的东西:

if ($(this).closest('li').length) {
    $(this).closest('li').remove();
} else { // must be in a table
    $(this).closest('tr').remove();
};

http://api.jquery.com/closest

如果您的元素位于li内的表格中,则需要更具创意:

if ($(this).closest('li').length) {
    if ( $(this).closest('li').is($(this).closest('tr').closest('li')) ) {
        // then we're in a table inside an li
        $(this).closest('tr').remove();
    } else {
        $(this).closest('li').remove();
    };
} else { // must be in a table
    $(this).closest('tr').remove();
};

http://api.jquery.com/is

答案 1 :(得分:1)

您可以使用closest() jQuery函数。

function elementInTable(element) {
   if (element.closest("table").length) return true;
   return false; 
}

另一个解决方案是搜索每个表并查看您的元素是否在表中:

function elementInTable(element) {
   element = $(element);

   $("table").each(function () {
      var currentTable = $(this);
      if (currentTable.find(element).length) {
          return true;
      }
   });
   return false;
}

我想这不是最好的,但可以成为解决方案。

答案 2 :(得分:0)

if($(/*query*/).parent().is('table')){}

或者如果它不是直接的孩子

if($(target).parents('table').length > 0) {
   //do something...
}

答案 3 :(得分:0)

您可以使用jquery.parents()函数检索给定选择的最近父级:

$(myElemToDelete).parents('tr').remove();

答案 4 :(得分:0)

关于如何完成你想要的东西,有几个很好的答案,但我想知道最初的前提......你能否将容器的id传递给函数?

<li id="li_0">Some content <span class="delete" onclick="deleteRow('li_0')">Delete</span></li>

这将使您的功能灵活地适用于任何结构。但是,我不知道这是否真的适用于你想要的东西。

答案 5 :(得分:0)

首先,检查父母是否存在。

如果是,请检查其输入/ tr或您要删除的元素,然后删除。

if ($(event.target).parent('.selector').size() > 0)
{
    $("#elementId").is("input")//or tr or whatever!!!
         {
//your removal code
         }
}