Get TypeError: $ (...) [0] не определено - PullRequest
0 голосов
/ 06 декабря 2018

Мой код вызывает скрипт ajax при нажатии кнопки.Сценарий ajax просто возвращает 0 или 1 в этот момент, например:

    $result = 1;
    echo json_encode($result);

Проблема с этой строкой:

    $('.adt-checkbox_0')[0].prop("checked", result);

Выдает ошибку

TypeError: $ (...) [0] не определено;не может получить доступ к свойству "prop"

Кажется, что код работает, но выглядит так, как будто он запускается дважды, так как я иногда получаю сбои (сообщения об ошибках в коде php).Если я удаляю [0], как я видел в некоторых постах, ошибка исчезает, но скрипт не работает.Я добавил код ниже в jsfiddle , но он не работает, я думаю, из-за функции php.Может кто-нибудь объяснить, что не так с этим утверждением?Должен ли я проверить линию, если она существует?Если да, то как мне это сделать?

    <form>
    <tr> 
    <input type="hidden" name="pid-adt-checkbox_0" value="14" id="pid-adt-checkbox_0" /> 
    <td class="adt" id="adt-checkbox_0"><input type="checkbox" name="adt_check_0" /></td>
    </tr>
    <tr> 
    <input type="hidden" name="pid-adt-checkbox_1" value="15" id="pid-adt-checkbox_0" /> 
    <td class="adt" id="adt-checkbox_1"><input type="checkbox" name="adt_check_1" /></td>
    </tr>
    </form>


    <script>
    $(".adt").click(function(){

        var next_id = $(this).closest('td').attr('id') ;
        var pid_id = 'pid-'+next_id;
        var pid = $("#"+pid_id).val();  

        var dataArray = {};
        dataArray[0] = 'change_status';
        dataArray[1] = 'oID';
        dataArray[2] = pid;  

        $.ajax({
           type:  'POST',
           data:  dataArray ,
           async: false,
           url:"adt_ajax.php",
           dataType: 'json',
           success:function(result) {
             $('.adt-checkbox_0')[0].prop("checked", result);
           }
        });
        return false;      

    }); 
    </script> 

1 Ответ

0 голосов
/ 26 декабря 2018

Проблемы:

  • adt-checkbox_0 не class, а id, исправление изменить его на #adt-checkbox_0

  • adt-checkbox_0 не input[type=checkbox], но td исправление: #adt-checkbox_0 input

  • с использованием индекса [0] вернет собственный объект JS, а не jQuery, исправление: используйте .eq(0)

Решение, если вы хотите использовать [0]

$('#adt-checkbox_0 input')[0].checked = result

с использованием jQuery

$('#adt-checkbox_0 input').eq(0).prop("checked", result);
...