web-dev-qa-db-fra.com

Définir le texte de l'étiquette avec JQuery

Cela devrait être assez simple, mais le code suivant ne fait rien pour changer le texte de l'étiquette suivante. J'ai essayé d'utiliser .text, .html et ainsi de suite en vain. Y a-t-il un problème avec ce code?

<script type="text/javascript">
$(document).ready(function()
{
    $("input:checkbox").on("change", checkboxChange);

    function checkboxChange()
    {
        $("#"+this.id).next("label").text("TESTTTT");
    }
});
</script>



<td width="15%" align="center"><input type="checkbox" name="task1" id="task1"></td>
<td width="25%" align="center"><label for="task1"></label></td>
8
user470760

La case à cocher est dans un td, il faut donc d'abord obtenir le parent:

$("input:checkbox").on("change", function() {
    $(this).parent().next().find("label").text("TESTTTT");
});

Alternativement, trouvez une étiquette qui a un for avec le même id (peut-être plus performant que la traversée inverse):

$("input:checkbox").on("change", function() {
    $("label[for='" + $(this).attr('id') + "']").text("TESTTTT");
});

Ou, pour être plus succinct, juste this.id:

$("input:checkbox").on("change", function() {
    $("label[for='" + this.id + "']").text("TESTTTT");
});
20
Abhitalks

Je voudrais simplement rechercher l'attribut for au lieu de récursif de façon répétitive l'arborescence DOM.

$("input:checkbox").on("change", function() {
    $("label[for='"+this.id+"']").text("TESTTTT");
});
8
CodingIntrigue