我发现使用jquery .after将一个div插入li中会出现问题。基本上,行动是删除整个李...我不知道为什么。我也在不同的表元素上使用.after看到了这种问题,这对我来说更有意义,因为我可以看到它会打破一个表。
看看这个jsfiddle:http://jsfiddle.net/XrUtq/
我必须这样做的原因是因为我必须想出一个通用的方法,以便能够将div中的div作为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的问题。
感谢您的帮助/建议!
答案 0 :(得分:3)
您使用稍微不正确的语法(向后排序),请改用:
更改此内容:
$('<div>Blabablabla</div>').after($('.editable'));
对此:
$('.editable').after('<div>Blabablabla</div>');
<强> Working fixed example 强>
jQuery .after(CONTENT)
在您选择的元素之后插入提供的内容。 after
方法应该附加到您的jQuery选择器。在您的代码中,您将选择器放在after
方法中。
我认为您打算使用可能与原始语法一起使用的.insertAfter()
。
答案 1 :(得分:2)
$('li').click(function(){
$('.editable').after('<div>Blabablabla</div>');
});
jQuery .after()
在匹配集中的每个元素(.editable
项)之后插入目标元素(div)。您使用的语法是jQuery .insertAfter()
,这是执行类似操作的另一种方法。
$('li').click(function(){
$('<div>Blabablabla</div>').insertAfter('.editable');
});