我正在制作一个通用的删除函数,它将删除一条记录,然后删除<tr>
如果元素在 a 内<table>
,或者<li>
如果它在 a 内<ul>
该元素可以在表格内的列表中,因此我需要知道哪个父元素最接近。
有没有办法使用jQuery找出这个?
我正在制作一个通用的删除函数,它将删除一条记录,然后删除<tr>
如果元素在 a 内<table>
,或者<li>
如果它在 a 内<ul>
该元素可以在表格内的列表中,因此我需要知道哪个父元素最接近。
有没有办法使用jQuery找出这个?
如果我理解正确,你想要这样的东西:
if ($(this).closest('li').length) {
$(this).closest('li').remove();
} else { // must be in a table
$(this).closest('tr').remove();
};
万一您的元素位于 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();
};
您可以使用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;
}
我想这不是最好的,但可以是一个解决方案。
if($(/*query*/).parent().is('table')){}
或者如果它不是直系孩子
if($(target).parents('table').length > 0) {
//do something...
}
您可以使用 jquery.parents() 函数来检索给定选择的最近父级:
$(myElemToDelete).parents('tr').remove();
关于如何完成你想要的,有几个很好的答案,但我想知道最初的前提......你能将容器的 id 传递给函数吗?
<li id="li_0">Some content <span class="delete" onclick="deleteRow('li_0')">Delete</span></li>
这将使您的功能灵活地在任何结构中工作。但是,我不知道这是否真的适合你想要的。
首先,检查父级是否存在。
如果是,则检查它的 input/tr 或您要删除的任何元素,然后删除。
if ($(event.target).parent('.selector').size() > 0)
{
$("#elementId").is("input")//or tr or whatever!!!
{
//your removal code
}
}