Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 jQuery each()不';使用OOP方法无法工作_Javascript_Jquery - Fatal编程技术网

Javascript jQuery each()不';使用OOP方法无法工作

Javascript jQuery each()不';使用OOP方法无法工作,javascript,jquery,Javascript,Jquery,这是我在javascript中的情况: EA = { DOMElement: $('#example img'), photos: '', ... countSelected: function(){ var len = 0; var id = ''; EA.DOMElement.each(function(index){ id = $(this).attr('data-id');

这是我在javascript中的情况:

EA = {
    DOMElement: $('#example img'),
    photos: '',
    ...

    countSelected: function(){
        var len = 0;
        var id = '';

        EA.DOMElement.each(function(index){
            id = $(this).attr('data-id');
            EA.photos += id + ",";
        });

        len = EA.photos.length;
        return len;
    },   
}
函数countSelected返回0,但如果使用此解决方案,则一切正常:

    countSelected: function(){
        var len = 0;
        var id = '';

        $('#example img').each(function(index){
            id = $(this).attr('data-id');
            EA.photos += id + ",";
        });

        len = EA.photos.length;
        return len;
    },   
在我看来,问题在于选择器:$(这个)。 你知道有什么解决办法吗


谢谢

问题是,您是什么时候初始化名称空间的?如果在DOM完全就绪之前这样做,并且/或者如果稍后在该
#example
元素下添加了图像,那么jQuery引用就过时了


你有两个选择。一种是稍后初始化它;另一种方法是每次使用jQuery调用(如在第二个代码段中);另一种方法是在名称空间中创建一个函数,该函数将在需要时调用jQuery构造函数(这至少可以减少选择器重复)。

您知道您得到的只是字符串的长度,而不是元素的数量吗?
each(index,element)
的第二个参数是对元素的引用?在这里似乎工作得很好:它遍历存储在
EA.domeElement
属性中的选择器中的img标记。一定是跟别的什么有关。请注意,我必须编写HTML,因为它不在帖子中。这不是一个解决方案,但请注意,您可以使用
$(this.data('id')我这样初始化名称空间:$(document.ready(function(){EA.init();});是的,但是您创建名称空间本身的速度要快于此(即,您运行
EA={/*stuff*/}
在文档准备就绪之前。因此jQuery调用将不起作用。我同意@PlatinumAzure。代码工作正常。在有任何
#示例img
s@MarkDesign它们是正确的,因为您正在将属性的值设置为
$(“#example img”)
#example img
元素存在之前,您基本上是将domeElement的值设置为空选择器,这就是代码不起作用的原因。您必须在
$(document).ready()处理程序中设置domeElement的值。