0

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

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

我必须这样做的原因是因为我必须想出一种通用的方法,以便能够将 div 作为 DOM 中的 CLOSE 放置到我无法控制的另一个元素(可能是任何一种元素)。然后 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);
}

但这并不能解释当前 li 的问题。

感谢您的帮助/建议!

4

2 回答 2

3

您正在使用稍微不正确的语法(有点倒退),请改用:

改变这个:

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

对此:

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

工作固定示例

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

我认为您打算使用.insertAfter()which 将与您的原始语法一起使用。

于 2012-08-09T18:02:31.590 回答
2

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');
});
于 2012-08-09T18:03:14.833 回答