Jquery 比较两个数组的匹配值
我有两个数组。 第一个数组Jquery 比较两个数组的匹配值,jquery,Jquery,我有两个数组。 第一个数组(idContainerArray)包含我跨页面选择的复选框的ID 第二个数组(idArray)将包含当前页面复选框的ID 我想比较这两个数组,如果找到匹配项,则选中当前页面上相应的复选框 下面的代码执行时没有错误,但不会选中复选框 jquery: var idArray = []; var idContainerArray = []; $.each(idArray, function (i, el) { if (
(idContainerArray)
包含我跨页面选择的复选框的ID
第二个数组(idArray)
将包含当前页面复选框的ID
我想比较这两个数组,如果找到匹配项,则选中当前页面上相应的复选框
下面的代码执行时没有错误,但不会选中复选框
jquery:
var idArray = [];
var idContainerArray = [];
$.each(idArray, function (i, el) {
if ($.inArray(el, idContainerArray) != -1) {
$(el).prop("checked", true);
}
});
选中的
属性值必须是选中的
。正如McGarnagle指出的那样,id的选择器是#
选中的属性值必须是选中的
。正如McGarnagle指出的那样,id的选择器是#
您没有正确选择DOM元素el
应为'#'+el
:
$("#" + el).prop("checked", true);
编辑
多亏了@Blender,document.getElementById(el).checked=true
似乎没有那么迂回。您没有正确选择DOM元素el
应为'#'+el
:
$("#" + el).prop("checked", true);
编辑
多亏了@Blender,document.getElementById(el).checked=true
似乎不那么迂回。您可以选择跨页列表中的元素,然后使用页内列表进行过滤:
var chkBoxes = $("#" + idContainerArray.join(",#"));
chkBoxes = chkBoxes.filter("#" + idArray.join(",#"));
chkBoxes.prop("checked", true);
您可以省略过滤器。idContainerArray
中包含的元素是否可以用作当前页面上的id,但不能包含在idArray
中?因为,如果没有,您可以跳过过滤器,只需执行以下操作:
$("#" + idContainerArray.join(",#")).prop("checked", true);
即使该id被重用为复选框以外的内容,也可以这样做。如果将checked属性写入非checkbox元素,则它不会受到伤害或产生任何副作用。如果id可以重复使用,但不能作为复选框使用,并且您不想写入checked
属性,则可以过滤掉非复选框:
$("#" + idContainerArray.join(",#")).filter(":checkbox").prop("checked", true);
或:
第二种不使用jQuery的:checkbox
速记的技术可能会快一些,因为它将利用浏览器的本机queryselectoral()
调用。在大多数页面上,您不会注意到差异。您可以选择跨页面列表中的元素,然后使用页面内列表进行过滤:
var chkBoxes = $("#" + idContainerArray.join(",#"));
chkBoxes = chkBoxes.filter("#" + idArray.join(",#"));
chkBoxes.prop("checked", true);
您可以省略过滤器。idContainerArray
中包含的元素是否可以用作当前页面上的id,但不能包含在idArray
中?因为,如果没有,您可以跳过过滤器,只需执行以下操作:
$("#" + idContainerArray.join(",#")).prop("checked", true);
即使该id被重用为复选框以外的内容,也可以这样做。如果将checked属性写入非checkbox元素,则它不会受到伤害或产生任何副作用。如果id可以重复使用,但不能作为复选框使用,并且您不想写入checked
属性,则可以过滤掉非复选框:
$("#" + idContainerArray.join(",#")).filter(":checkbox").prop("checked", true);
或:
第二种不使用jQuery的:checkbox
速记的技术可能会快一些,因为它将利用浏览器的本机queryselectoral()
调用。但是在大多数页面上,您不会注意到差异。为什么attr
而不是prop
?attr与html属性一起工作,而prop与DOM属性一起工作。有关详细信息,请参阅。查找后,从jQuery 1.6开始,.prop(“checked”,true)
与.attr(“checked”,checked”)
为什么attr
而不是prop
?attr与html属性一起工作,而prop与DOM属性一起工作,有关详细信息,请参阅。查找后,从jQuery 1.6开始,开始,
与.attr(“checked”,checked”)
或justdocument.getElementById(el).checked=true
或justdocument.getElementById(el).checked=true