2011-07-07 13 views
5

z jakiegoś powodu przy użyciu funkcji insertAdjacentHtml w FF Otrzymuję insertAdjacentHTMl nie jest błędem funkcji, czy istnieje alternatywa dla tego w jQuery lub jakiejś innej alternatywnej funkcji javascript?insertAdjacentHtml w jquery

Odpowiedz

6

To zależy od tego jak używasz go.

.insertAdjacentHTML("beforeBegin", ...) //$('...').before(...) 
.insertAdjacentHTML("afterBegin", ...) //$('...').after(...) 
.insertAdjacentHTML("beforeEnd", ...) //$('...').append(...) 
.insertAdjacentHTML("afterEnd", ...) //$('...').prepend(...) 

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

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

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

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


Przykład kodu

$('<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');
.border { 
 
    border: 1px solid #000; 
 
    margin: 10px; 
 
    padding: 5px 15px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="main border"> 
 
    <p>Main</p> 
 
</div>

+1

Jest krytyczny błąd w mapowaniu. "afterBegin' i" afterEnd' są transponowane. Dodałem poprawioną wersję [tutaj] (http://stackoverflow.com/a/40431232/168874) (ponieważ moja edycja została odrzucona). –

4

celu rozszerzenia i poprawne @Adam Terlson „S answer:

Poniżej odwzorowywanie insertAdjacentHTMLposition wartości i związanego jQuery DOM insertion functions.

beforebegin/before

document.getElementById('foo').insertAdjacentHTML("beforebegin", "<hr>") 
$('#foo').before("<hr>") 

afterend/after

document.getElementById('foo').insertAdjacentHTML("afterend", "<hr>") 
$('#foo').append("<hr>") 

beforeend/append

document.getElementById('foo').insertAdjacentHTML("beforeend", "<hr>") 
$('#foo').append("<hr>") 

afterbegin/prepend

document.getElementById('foo').insertAdjacentHTML("afterbegin", "<hr>") 
$('#foo').prepend("<hr>") 

Strona MDN ma good visualization of what these mean, który wygląda tak:

<!-- beforebegin/before --> 
<p> 
    <!-- afterbegin/prepend --> 
    foo 
    <!-- beforeend/append --> 
</p> 
<!-- afterend/after--> 

Pomyłka w @Adam Terlson „s answer, że afterBegin i afterEnd zostały transponowane.

0

Oto działający przykład na ten temat.

$('<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');
.border { 
 
    border: 1px solid #000; 
 
    margin: 10px; 
 
    padding: 5px 15px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="main border"> 
 
    <p>Main</p> 
 
</div>