скрыть текст, но не вводить внутри метки jquery - PullRequest
2 голосов
/ 01 декабря 2009

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

<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>

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

Ответы [ 5 ]

4 голосов
/ 01 декабря 2009

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

var l = $('label[for=FormField_29_0]');
l.html(l.find('input'));
0 голосов
/ 01 декабря 2009

Я думаю, что ваша проблема связана с тем фактом, что ваш вклад вложен в тег 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>
0 голосов
/ 01 декабря 2009

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

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);
0 голосов
/ 01 декабря 2009
var $formfield = $('#FormField_29');
$formfield.find('label').html($formfield.find('label input'));
0 голосов
/ 01 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...