获取TypeError:$(...)[0]未定义

时间:2018-12-06 17:23:04

标签: jquery undefined typeerror

单击按钮时,我的代码将调用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 :(得分:0)

问题:

  • 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);