jquery中的insertAdjacentHtml

ano*_*non 6 javascript jquery

由于某些原因在FF中使用insertAdjacentHtml函数我得到insertAdjacentHTMl不是函数错误,在jQuery或其他一些替代javascript函数中是否有替代?

Ada*_*son 9

这取决于你如何使用它.

.insertAdjacentHTML("beforeBegin", ...) //$('...').before(...)
.insertAdjacentHTML("afterBegin", ...) //$('...').prepend(...)
.insertAdjacentHTML("beforeEnd", ...) //$('...').append(...)
.insertAdjacentHTML("afterEnd", ...) //$('...').after(...)
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/before/

http://api.jquery.com/after/

http://api.jquery.com/append/

http://api.jquery.com/prepend/


代码示例

$('<p class="border">PrependTo</p>').prependTo($('.main'));
    $('.main').prepend('<p class="border">Prepend</p>');

    $('<p class="border">AppendTo</p>').appendTo($('.main'));
$('.main').append('<p class="border">Append</p>');


$('<p class="border">Insert After</p>').insertAfter('.main');

$('<p class="border">Insert Before</p>').insertBefore('.main');
Run Code Online (Sandbox Code Playgroud)
.border {
  border: 1px solid #000;
  margin: 10px;
  padding: 5px 15px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main border">
  <p>Main</p>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 映射中存在严重错误.转换后`afterBegin`和`afterEnd`.我已添加更正版本[此处](http://stackoverflow.com/a/40431232/168874)(因为我的编辑被拒绝). (2认同)

gen*_*ood 5

扩展和纠正@Adam Terlson答案:

这是insertAdjacentHTML position值的映射和相关的jQuery DOM插入函数.

beforebegin/before

document.getElementById('foo').insertAdjacentHTML("beforebegin", "<hr>")
$('#foo').before("<hr>")
Run Code Online (Sandbox Code Playgroud)

afterend/after

document.getElementById('foo').insertAdjacentHTML("afterend", "<hr>")
$('#foo').append("<hr>")
Run Code Online (Sandbox Code Playgroud)

beforeend/append

document.getElementById('foo').insertAdjacentHTML("beforeend", "<hr>")
$('#foo').append("<hr>")
Run Code Online (Sandbox Code Playgroud)

afterbegin/prepend

document.getElementById('foo').insertAdjacentHTML("afterbegin", "<hr>")
$('#foo').prepend("<hr>")
Run Code Online (Sandbox Code Playgroud)

MDN页面可以很好地显示这些看起来像这样的含义:

<!-- beforebegin / before -->
<p>
  <!-- afterbegin / prepend -->
  foo
  <!-- beforeend / append -->
</p>
<!-- afterend / after-->
Run Code Online (Sandbox Code Playgroud)

在这个错误@Adam Terlson回答是,afterBeginafterEnd进行了调换.