Wie ersetze ich den Text der jQueryUI-Schaltfläche?

Lesezeit: 3 Minuten

Ich habe eine Schaltfläche, die ich mit jQueryUI verwende, so etwas (vereinfacht).

<button id="mybutton">Play<button>
<script>
$("#mybutton").button().toggle(
    function(){
       $(this).text('Stop');
    },
    function(){
       $(this).text('Start');
    },
);
</script>

Dieser Code verändert das Aussehen der Schaltfläche, da beim Einfügen in das Schaltflächen-Widget eine neue Spanne innerhalb der Schaltfläche hinzugefügt wird. Also ändere ich den Schaltflächenwert jetzt so

$(this).find('span').text('Stop');

Das ist hacky, weil ich den Knopf nicht mehr als Blackbox behandeln kann und hineingehen muss.

Gibt es einen sauberen Weg, dies zu tun?

Vielleicht könntest du die gebrauchen label Option der jQuery-UI-Schaltfläche jetzt stattdessen?

$("#mybutton").button().toggle(function() {
   $(this).button('option', 'label', 'Stop');
}, function() {
   $(this).button('option', 'label', 'Start');
});

jsbin-Vorschau hier

  • Zur Verdeutlichung können Sie auch so etwas tun: $(this).button({label:'Stop',icons:{secondary: "ui-icon-circle-close"}}); Dies ist hilfreich, wenn Sie auch andere Dinge ändern möchten, z. B. das Symbol usw.

    – Roberthuttinger

    5. Mai 2014 um 18:42 Uhr


Sie können die Methode .button(“refresh”) verwenden, nachdem Sie den Text geändert haben.

$("#mybutton").button().toggle(
    function(){
       $(this).text('Stop').button("refresh");
    },
    function(){
       $(this).text('Start').button("refresh");
    },
);

http://jqueryui.com/demos/button/#method-refresh

  • Ich habe sogar versucht so zu tun, als würde ich die Schaltfläche von Grund auf neu erstellen und es funktioniert immer noch nicht $(this).text(‘Start’); $(dies).button(); Zerbricht auch den Knopf

    – Andrej R

    19. April 2010 um 8:22 Uhr

  • Dies funktioniert, aber es scheint, dass die anderen vorhandenen Eigenschaften auf der Schaltfläche entfernt werden. Die Antwort von Gnarf scheint am besten zu funktionieren, wenn Sie nur den Text ändern und die anderen Eigenschaften in Ruhe lassen möchten.

    – Chris

    12. Dezember 2013 um 19:31 Uhr

Nach dem Aufruf von .button() zum Erstellen einer jQuery-UI-Schaltfläche scheint der Text aus dem ursprünglichen Schaltflächenelement entfernt und in a platziert worden zu sein <span class = ui-button-text></span> innerhalb des Button-Elements.

So etwas würde funktionieren:

$("#myButton > .ui-button-text").text("New Text");

Ich weiß nicht, ob Sie immer noch nach einer Antwort darauf suchen, aber ich habe Ihre Frage gefunden. Wenn Sie sich den Code der Schaltfläche ansehen, fügt jQuery ein oder zwei Tags hinzu. Anstatt das Ganze neu zu schreiben, habe ich den Knopf ersetzt .html() mit dem gleichen HTML, aber verwendetem Javascript Suche() um das Etikett auszuwechseln. Es ist hässlich, aber es funktioniert. Es verwendet auch die Tastenbeschriftung, um korrekt umzuschalten.

var bdef = $(this).html();
var ht = "";
if (bdef.search("Nuevo") != -1) { 
    ht = $(this).html();
    $(this).html(ht.replace("Nuevo", "Lista"));
}
else {
    ht = $(this).html();
    $(this).html(ht.replace("Lista", "Nuevo"));
}

Ist immer die ID der Schaltfläche myButton? Wenn ja, dann einfach verwenden

$("#myButton").text('Stop');

  • Wie wird diese Spanne hinzugefügt? Wenn drinnen myButton dann geht es natürlich nicht. In diesem Fall können Sie Folgendes tun: $(“#myButton span”).text(‘Stop’); was deinem Code entspricht. Warum ist das Spanne Innerhalb das Button-Tag? Das klingt falsch…

    – psychotik

    19. April 2010 um 8:11 Uhr

  • ja. so mache ich das, aber so will ich das nicht machen.

    – Andrej R

    19. April 2010 um 8:13 Uhr

  • ähm… was ist dann der Ursprung dieser Spanne? Ich sehe nicht, wie Sie dies auf andere Weise tun können, ohne die Spanne loszuwerden.

    – psychotik

    19. April 2010 um 8:22 Uhr

Benutzer-Avatar
Taryn

Sie müssen tun .button("refresh")

$('#mybutton').text('Save').button("refresh");

  • Wie wird diese Spanne hinzugefügt? Wenn drinnen myButton dann geht es natürlich nicht. In diesem Fall können Sie Folgendes tun: $(“#myButton span”).text(‘Stop’); was deinem Code entspricht. Warum ist das Spanne Innerhalb das Button-Tag? Das klingt falsch…

    – psychotik

    19. April 2010 um 8:11 Uhr

  • ja. so mache ich das, aber so will ich das nicht machen.

    – Andrej R

    19. April 2010 um 8:13 Uhr

  • ähm… was ist dann der Ursprung dieser Spanne? Ich sehe nicht, wie Sie dies auf andere Weise tun können, ohne die Spanne loszuwerden.

    – psychotik

    19. April 2010 um 8:22 Uhr

1186010cookie-checkWie ersetze ich den Text der jQueryUI-Schaltfläche?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy