Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当选择器以1个元素为目标时,jQuery.data()函数起作用,但当选择器以多个元素为目标并对其进行迭代时,函数不起作用_Javascript_Jquery - Fatal编程技术网

Javascript 当选择器以1个元素为目标时,jQuery.data()函数起作用,但当选择器以多个元素为目标并对其进行迭代时,函数不起作用

Javascript 当选择器以1个元素为目标时,jQuery.data()函数起作用,但当选择器以多个元素为目标并对其进行迭代时,函数不起作用,javascript,jquery,Javascript,Jquery,因此,我试图读取选中的每个复选框的数据值,为此,我有以下代码: var jobjChk = $("input:checkbox[name=resourceSelect]:checked"); jobjChk.each(function () { receivers[receivers.length] = this.data("data-email"); }); 现在,当只选中一个复选框,并且我使用this.data时,代码会按预期工作。当我使用上面的代码并选中多个复选框时,“我得到的对

因此,我试图读取选中的每个复选框的数据值,为此,我有以下代码:

var jobjChk = $("input:checkbox[name=resourceSelect]:checked");
jobjChk.each(function () {
    receivers[receivers.length] = this.data("data-email");
});

现在,当只选中一个复选框,并且我使用this.data时,代码会按预期工作。当我使用上面的代码并选中多个复选框时,“我得到的对象不支持属性或方法‘数据’”。但是两者都应该是jquery对象(并支持.data())?

您的假设是错误的。本声明:

但两者都应该是jquery对象(并支持.data())

这是不正确的。
.each()
回调中的
this
是实际的DOM元素,而不是jQuery对象。如果要使用jQuery函数,需要创建一个包含该单个元素的新jQuery对象:

jobjChk.each(function () {
    receivers[receivers.length] = $(this).data("data-email");
});
更新此行:

 receivers[receivers.length] = $(this).data("data-email");
或者,如果您的复选框中包含类似以下内容的attr
data-email=”abc@xyz.com“
然后您可以使用:

 receivers[receivers.length] = $(this).data("email");

见: 在您的代码中,此属于文档中的dom节点,而不是像这样用
$(this)
jQuery(this)
包装的jQuery对象

所以
属于dom节点。
$(此)
是jQuery对象。

检查此小提琴:

首先换行

receivers[receivers.length] = this.data("data-email");

接下来,在读取数据属性时,您应该使用类似于此的
$(this).data(“email”)
而不是此
$(this).data(“data email”)
,您的HTML应该如下所示

<input type="checkbox" name="resourceSelect" value="dog" data-email="a@a.com" />I have a dog
我有一只狗
使用$(this.data(),而不是this.data())
<input type="checkbox" name="resourceSelect" value="dog" data-email="a@a.com" />I have a dog