jquery .删除整个 li 或 table 元素后

jquery .after deleting entire li or table element

本文关键字:table 元素 li 删除 jquery      更新时间:2023-09-26

我看到使用 jquery .after 将div 插入 li 时出现问题。 从本质上讲,该操作是删除整个 li...我不知道为什么。我还在不同的表元素上使用 .after 看到了这种问题,这对我来说更有意义,因为我可以看到这会破坏表格。

看看这个jsfiddle:http://jsfiddle.net/XrUtq/

我必须

这样做的原因是因为我必须想出一种通用方法,以便能够在 dom 中尽可能将div 放在另一个我无法控制的元素(可以是任何类型的元素)上。然后,div 将相对/绝对地放置在页面上,以覆盖它所追求的元素。我这样做是因为我们需要一个解决方案,而不是将div 附加到正文中,因为如果视图发生变化,那么附加的元素将保留在页面上,而不是随着它应该包含的内容而消失。

我希望我已经把问题说得足够清楚了。我尝试过这样的方法:

if (nodeName === 'td' || nodeName === 'tr' || nodeName === 'th' || nodeName === 'tbody'){           
    popover.appendTo(editable.closest(':visible:not(tr):not(td):not(table):not(tbody)'));
}
else if(editable.is(':visible')){
    popover.after(editable);
}
else{
    $('body').append(popover);
}

但这并不能解释李目前的问题。

感谢您的帮助/建议!

您使用的语法略有不正确(有点向后),请改用这个:

更改此设置:

$('<div>Blabablabla</div>').after($('.editable'));

对此:

$('.editable').after('<div>Blabablabla</div>');

工作固定示例

jQuery .after(CONTENT)在您选择的元素之后插入提供的内容。after方法应附加到 jQuery 选择器中。在代码中,您将选择器放在 after 方法中。

我认为您打算使用.insertAfter()它本来可以与您的原始语法一起使用。

http://jsfiddle.net/XrUtq/1/

$('li').click(function(){
    $('.editable').after('<div>Blabablabla</div>');
});

jQuery .after()在匹配集(.editable项)中的每个元素之后插入一个目标元素(div)。您使用的语法是用于jQuery .insertAfter(),这是执行类似操作的替代方法。

$('li').click(function(){
    $('<div>Blabablabla</div>').insertAfter('.editable');
});