1

这是我在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;
    },   

在我看来,问题出在选择器上:$(this)。你知道有什么解决办法吗?

谢谢!

4

1 回答 1

2

问题是,你是什么时候初始化命名空间的?如果您在 DOM 完全准备好之前这样做了,和/或如果稍后在该#example元素下添加了图像,那么 jQuery 引用是陈旧的。

你有几个选择。一种是稍后初始化;另一个是每次都使用 jQuery 调用(就像在你的第二个代码片段中一样);另一个是在命名空间中创建一个函数,该函数将在您需要时调用 jQuery 构造函数(这至少允许您减少选择器重复)。

于 2012-08-30T16:10:56.047 回答