@denism300

Как управлять элементом внутри контейнера?

Есть конструкция:
<fieldset id="shipmentSelect">
    <div class="form-check">
        <input type="radio" data-dynamic-update="1" name="shipmentmethod_id" id="shipment_id_1" value="1">
        <label for="shipment_id_1">Самовывоз</label>
        <a class="editShipment pl-2 d-none" href="/index.php/uchetnaya-zapis/editaddresscartBT" rel="nofollow">Уточнить</a>        
    </div>
    <div class="form-check">
        <input type="radio" data-dynamic-update="1" name="shipmentmethod_id" id="shipment_id_2" value="2" checked="checked">
        <label for="shipment_id_2">Доставка</label>
        <a class="editShipment pl-2 d-none" href="/index.php/uchetnaya-zapis/editaddresscartBT" rel="nofollow">Уточнить</a>        
    </div>
</fieldset>

пытаюсь написать скрипт, чтобы показывать кнопку "Уточнить" только выбранному элементу (удаляя или добавляя класс d-none), однако, скрипт срабатывает сразу для обоих элементов.
Скрипт
(function($) {
    $(document).ready(function() {
        if ($('#shipmentSelect div.form-check input[name="shipmentmethod_id"]:not(:checked)')) {
            $(this).find('a.editShipment').removeClass('d-none');
        }
        $('#shipmentSelect div.form-check input[name="shipmentmethod_id"]').change(function () {
            if ($('#shipmentSelect div.form-check input[name="shipmentmethod_id"]:not(:checked)')) {
                $(this).find('a.editShipment').addClass('d-none');
            }
            if ($('#shipmentSelect div.form-check input[name="shipmentmethod_id"]').is(':checked')) {
                $(this).find('a.editShipment').removeClass('d-none');
            }
        });		
    });
})(jQuery);

Что нужно поправить?
  • Вопрос задан
  • 33 просмотра
Решения вопроса 2
orlov0562
@orlov0562
I'm cool!
1) выложи код на jsfiddle, так проще будет помочь

2) у тебя
$('#shipmentSelect div.form-check input[name="shipmentmethod_id"]').change(function () {
выбирает input, а дальше ты пробуешь найти его потомка
$(this).find('a.editShipment').addClass('d-none');

тебе, наверное, надо сделать так, чтобы искать внутри div.form-check
$(this).parent().find('a.editShipment').addClass('d-none');
Ответ написан
0xD34F
@0xD34F
$('#shipmentSelect').change(function() {
  $(this).find('.editShipment').addClass('d-none');
  $(this).find('input:checked').closest('.form-check').find('.editShipment').removeClass('d-none');
}).change();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы