【发布时间】:2019-05-08 11:04:21
【问题描述】:
单击按钮时,我的代码会调用 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>
【问题讨论】:
-
即使你找到了元素,你所做的也没有意义。
prop()是一个 jQuery 方法,而不是原生 Element 方法。所以用[0]将元素从 jQuery 对象中分离出来是没有意义的。 -
您无法检查隐藏字段 - 您的 HTML 也是无效的
-
你不应该需要
[0]- 大多数 jQuery 函数都可以像你希望的那样在多选中工作 -
你是说
$("[name=adt_check_0]").prop("checked",result=="true") -
$('.adt-checkbox_0')不存在。你的意思是#closetypo
标签: jquery undefined typeerror