在元素之间添加div

时间:2015-01-15 04:43:56

标签: javascript jquery dom

我有两段,介于两者之间,我会调用一个函数。此函数用于在段落之间创建新的div。

<div id="container">
    <p>lorem ipsum</p>
    <script>createDiv()</script>
    <p>lorem ipsum</p>
    <p>lorem ipsum</p>
</div>

我见过append(),但需要追加目标。我想每次调用函数时自动添加div。

此外,document.write()但这将清除段落。

同一页面上有多个段落,我无法在这些段落中添加ID或类。我无法控制它们。

8 个答案:

答案 0 :(得分:2)

我首先要说的是,你要做的事情非常难看。鉴于您的约束,您的应用程序结构很可能存在其他根本性的错误。我甚至觉得有点脏,给你这个解决方案。

无论如何,要根据您指定的代码示例和要求回答您的问题,您可能需要保留脚本注入标记的全局计数器,以便您可以附加到其先前的兄弟。这是一个应该做你想要的小提琴(http://jsfiddle.net/h5qttvx5/3/)的例子。

给定HTML

<div id="container">
<p>lorem ipsum</p>
<script>createDiv()</script>
<p>lorem ipsum</p>
<p>lorem ipsum</p>
<script>createDiv()</script>
</div>

和JS(头脑)

var scripts = 0;
function createDiv() {
    $("#container > script").eq(scripts).prev().after("<div>HI</div>");
    scripts++;
}

答案 1 :(得分:1)

试试这个:删除脚本调用并将id分配给第一段,然后使用.after()追加div

<p id="firstP">lorem ipsum</p>
<p>lorem ipsum</p>

注意: - 您可以将class属性用于第一个p元素而不是id,并按照$('.className')

修改您的jQuery选择器

使用.after()

$(function(){
  $('#firstP').after('<div>Your div </div>');
});

答案 2 :(得分:0)

首先创建一个函数并为其命名createDiv:

<script>
    function createDiv(div) {
       document.write('<div>Testing</div>');
    }
</script>

他们调用你想要放置新div的函数:

<p>lorem ipsum</p>
<script>createDiv()</script>
<p>lorem ipsum</p>

OBS:脚本必须位于HEAD中。

答案 3 :(得分:0)

如果你在p标签内附加:

 $('p').append('<div>xyz</div>');

如果你在p标签之间追加为sibling:

 $('<div>xyz</div>').insertAfter('p:first');

答案 4 :(得分:0)

将您的标记更改为

<p id="lorem">lorem ipsum</p>
 <div id="thediv">
 </div>
<p>lorem ipsum</p>

并致电$("#thediv").append("<div>append div</div>");

DEMO FIDDLE

  $('#lorem').after('<div>append div </div>');

DEMO FIDDLE

答案 5 :(得分:0)

&#13;
&#13;
$("p:first").after("<div>Hello World</div>");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p>lorem ipsum</p>

<p>lorem ipsum</p>
&#13;
&#13;
&#13;

答案 6 :(得分:0)

如果我能很好地理解你的问题,这段代码应该可以正常工作。

<p>lorem ipsum</p>
<script>document.write('<div>Testing</div>')</script>
<p>lorem ipsum</p>

答案 7 :(得分:0)

因为你有一个带有id的div容器,你可以将其作为目标,然后逐渐减少。请尝试以下方法:

$('#container > p:first').after('<div>hello</div>');

这将定位容器div中的第一个p标记,并在其后面添加一个div。

性能方面,您可能希望使用first()方法而不是伪类:first。

$('#container > p').first().after('<div>hello</div>');

此Stackoverflow问题的答案显示了两种情况的测试: jQuery :first vs. .first()