Javascript jQuery each()不';使用OOP方法无法工作
这是我在javascript中的情况: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');
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的值。