0

我正在制作一个通用的删除函数,它将删除一条记录,然后删除<tr>如果元素在 a 内<table>,或者<li>如果它在 a 内<ul>

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

有没有办法使用jQuery找出这个?

4

6 回答 6

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

万一您的元素位于 a 内的表格中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

于 2013-07-25T18:29:08.987 回答
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;
}

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

于 2013-07-25T18:29:43.093 回答
0
if($(/*query*/).parent().is('table')){}

或者如果它不是直系孩子

if($(target).parents('table').length > 0) {
   //do something...
}
于 2013-07-25T18:25:03.043 回答
0

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

$(myElemToDelete).parents('tr').remove();
于 2013-07-25T18:27:51.087 回答
0

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

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

这将使您的功能灵活地在任何结构中工作。但是,我不知道这是否真的适合你想要的。

于 2013-07-25T18:31:47.257 回答
0

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

如果是,则检查它的 input/tr 或您要删除的任何元素,然后删除。

if ($(event.target).parent('.selector').size() > 0)
{
    $("#elementId").is("input")//or tr or whatever!!!
         {
//your removal code
         }
}
于 2013-07-25T18:33:03.797 回答