我正在制作一个删除记录的通用删除功能,如果该元素位于<tr>
内,则删除<table>
,如果<li>
位于<ul>
内,则删除{{1}} 1}}
元素可以位于表格内的列表中,因此我需要知道哪个父元素最接近。
有没有办法使用jQuery找到它?
答案 0 :(得分:1)
如果我理解正确,你需要这样的东西:
if ($(this).closest('li').length) {
$(this).closest('li').remove();
} else { // must be in a table
$(this).closest('tr').remove();
};
如果您的元素位于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();
};
答案 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
}
}