Jak zastąpić innerHTML div za pomocą jQuery?


1017

Jak mogę osiągnąć następujące cele:

document.all.regTitle.innerHTML = 'Hello World';

Używając jQuery, gdzie regTitlejest mój identyfikator div?

Odpowiedzi:



320

Funkcja html () może pobierać ciągi HTML i skutecznie modyfikuje .innerHTMLwłaściwość.

$('#regTitle').html('Hello World');

Jednak funkcja text () zmieni wartość (text) określonego elementu, ale zachowa htmlstrukturę.

$('#regTitle').text('Hello world'); 

12
„ale zachowaj strukturę HTML”. możesz wytłumaczyć?
Anoop Joshi

10
Z dokumentacji jQuery API ( api.jquery.com/text ), text()różni się: Unlike the .html() method, .text() can be used in both XML and HTML documents.. Ponadto, zgodnie z stackoverflow.com/questions/1910794/... , jQuery.html() treats the string as HTML, jQuery.text() treats the content as text.
Gorgsenegger,


69

Jeśli zamiast tego masz istniejący obiekt jquery, który chcesz wyrenderować: Po prostu zresetuj zawartość i dodaj nową.

var itemtoReplaceContentOf = $('#regTitle');
itemtoReplaceContentOf.html('');
newcontent.appendTo(itemtoReplaceContentOf);

Lub:

$('#regTitle').empty().append(newcontent);

17
Dobre miejsce do użyciaitemtoReplaceContentOf.empty();
Kevin Panko,

Czy newcontentjest obiektem jQuery? To nie jest jasne.
kmoser

@kmoser W pierwszym przykładzie newcontent jest rzeczywiście obiektem jquery. W drugim przykładzie może być typu htmlStringlub Elementlub Textlub Arraylub jQueryzgodnie api.jquery.com/append
Cine

27

Oto twoja odpowiedź:

//This is the setter of the innerHTML property in jQuery
$('#regTitle').html('Hello World');

//This is the getter of the innerHTML property in jQuery
var helloWorld = $('#regTitle').html();

11

Odpowiedź:

$("#regTitle").html('Hello World');

Wyjaśnienie:

$jest równoważne z jQuery. Oba reprezentują ten sam obiekt w bibliotece jQuery. "#regTitle"Wewnątrz nawiasu nazywany jest selektor , który jest wykorzystywany przez bibliotekę jQuery zidentyfikować, który element (y) HTML DOM (Document Object Model), który chcesz zastosować do kodu. #Przed regTitlemówi jQuery który regTitlejest identyfikatorem elementu wewnątrz DOM.

Stamtąd notacja kropkowa służy do wywołania funkcji html, która zastępuje wewnętrzny html dowolnym parametrem umieszczonym pomiędzy nawiasami, którym jest w tym przypadku 'Hello World'.


11

Istnieją już odpowiedzi, które podają, jak zmienić wewnętrzny HTML elementu.

Proponuję jednak użyć animacji, takich jak Zanikanie / Zanikanie, aby zmienić HTML, co daje dobry efekt zmienionego HTML, a raczej natychmiastową zmianę wewnętrznego HTML.

Użyj animacji, aby zmienić wewnętrzny HTML

$('#regTitle').fadeOut(500, function() {
    $(this).html('Hello World!').fadeIn(500);
});

Jeśli masz wiele funkcji, które tego potrzebują, możesz wywołać funkcję wspólną, która zmienia wewnętrzny HTML.

function changeInnerHtml(elementPath, newText){
    $(elementPath).fadeOut(500, function() {
        $(this).html(newText).fadeIn(500);
    });
}

11

w tym celu możesz użyć funkcji HTML lub tekstu w jquery

$("#regTitle").html("hello world");

LUB

$("#regTitle").text("hello world");

9

jQuery .html()może być używany do ustawiania i pobierania zawartości dopasowanych niepustych elementów ( innerHTML).

var contents = $(element).html();
$(element).html("insert content into element");

Nawias otwierający i zamykający po HTML uratował mnie. Więc pamiętajcie, ludzie ci dwaj są ważni.
Gellie Ann

9

Przykład

$( document ).ready(function() {
  $('.msg').html('hello world');
});
    <!DOCTYPE html>
    <html>
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>    
      </head>
      <body>
        <div class="msg"></div>
      </body>
    </html>



3

Aby dodać kilka informacji o wydajności.

Kilka lat temu miałem projekt, w którym mieliśmy problemy z ustawieniem dużego HTML / tekstu na różne elementy HTML.

Okazało się, że „odtworzenie” elementu i wstrzyknięcie go do DOM było znacznie szybsze niż którakolwiek z sugerowanych metod aktualizacji zawartości DOM.

Więc coś takiego:

var text = "very big content";
$("#regTitle").remove();
$("<div id='regTitle'>" + text + "</div>").appendTo("body");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Powinien zapewnić lepszą wydajność. Nie próbowałem tego ostatnio mierzyć (obecnie przeglądarki powinny być sprytne), ale jeśli szukasz wydajności, może to pomóc.

Minusem jest to, że będziesz mieć więcej pracy, aby utrzymać DOM i odwołania w skryptach wskazujące właściwy obiekt.


3

jQuery ma kilka funkcji, które działają z tekstem, jeśli go użyjesz text(), zrobi to za Ciebie:

$("#regTitle").text("Hello World");

Możesz też użyć html()zamiast tego, jeśli masz tag HTML ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.