Скрыть текст, но не вводить внутри метки jquery

У меня есть этикетка и информация, выводимая из корзины покупок, которую мы используем. Я не хочу взламывать ядро ​​корзины, чтобы изменить способ ее вывода. таким образом, код, таким образом, с вводом внутри метки:

<div id="FormField_29" class="FormField">
    <label for="FormField_29_0"><input type="checkbox" id="FormField_29_0" name="FormField[2][29][0]" value="Yes" class="subscribeBox FormFieldOption"  /> Yes</label>
</div>

я пытаюсь скрыть слово "да" в ярлыке, но не могу выбрать его. это не брат или сестра ввода, так как его метка. и если я выбираю родителя, а не ввод, он все равно заставляет исчезнуть весь ярлык с вводом. Я попытался затем, и он не будет выбирать его, так как в действительности текст на самом деле не следующий. Я не могу использовать сироту, поскольку она не является сиротой, являющейся частью лейбла. что мне не хватает? Спасибо!

5 ответов

Решение

Замените содержимое ярлыков только флажком.

var l = $('label[for=FormField_29_0]');
l.html(l.find('input'));

Это работает, но, возможно, есть лучший способ:

var $label = $("label[for='FormField_29_0']");
var $checkbox = $label.find("input:checkbox");
$label.html($checkbox);

редактировать

Так как вы удаляете текст, я думаю, вы можете заменить метку только флажком:

var $label = $("label[for='FormField_29_0']");
$label.replaceWith($label.find("input:checkbox"));

редактировать

Или, если вы хотите оставить текст на месте, но просто скрыть его (опять же, я уверен, что есть лучший способ):

var $label = $("label[for='FormField_29_0']");
var $text = $('<span>' + $label.text() + '</span>').hide();
var $checkbox = $label.find("input:checkbox");
$label.empty().append($checkbox).append($text);
var $formfield = $('#FormField_29');
$formfield.find('label').html($formfield.find('label input'));

Я думаю, что ваша проблема связана с тем фактом, что ваш вклад вложен в тег label. Используя измененный HTML ниже, вы сможете изменить текст метки с любым количеством селекторов, таких как $('.FormField label').text('');

    <div id="FormField_29" class="FormField">
    <label for="FormField_29_0">Yes</label><input type="checkbox" id="FormField_29_0" name="FormField[2][29][0]" value="Yes" class="subscribeBox FormFieldOption"  />
</div>

Используя jquery, вы можете удалить элемент ввода из метки, добавить его к метке (добавить его обратно), а затем скрыть метку.

http://docs.jquery.com/Manipulation/remove

Другие вопросы по тегам