计算插件中所选元素的总数。

问题描述 投票:1回答:2

我想计算一个选定元素在html文档中出现的总次数,我必须在Jquery插件中执行此操作:

所以说我选择html doc中的所有图像。像这样 :

$(document).ready(function(){
    $('img').randomize();
});

现在在Jquery插件中,我如何计算html文档中img出现的总次数?还要注意我想要总是选择一个img,它可能是任何其他html元素或类或id。

所以我在插件中编写了以下代码:

   var count = 0;
    $(this).each(function(){
            count++;
    });

现在这样做了,但不知何故看起来很脏,我更喜欢写一个计数功能,所以我也尝试过:

    function number_of_image(){
          $(this).each(function(){
            count++;
        }); 
        return count;
    };

我莫名其妙地无法让$(this)指向当前所选元素(在本例中为'img')。

我尝试了另外一件事,那就是我尝试将$(this)存储在变量中作为全局声明:

var current = $(this);

然后使用这样的电流:

    function number_of_image(){
          current.each(function(){
            count++;
        }); 
        return count;
    };

不知何故,这也不能完成这项工作,在上述任何一种情况下我都不知道确切地说$(这个)指向的地方。

所以回到这个问题:

我如何编写一个计算所选元素数量的函数?请尽可能详细说明你的解释,我是新手:D

谢谢 。

jquery jquery-plugins
2个回答
0
投票

既然你在插件中说过,你的代码必须与@rahul建议的稍微不同,但是你必须将$(this)作为参数传递给number_of_image()函数。

代码看起来如下:

        function number_of_image(current){
              $(current).each(function(){
                count++;
            }); 
            return count;
        };

现在您可以按如下方式调用该函数或者调用它。并检查结果:

console.log(number_of_image($(this)));  

或者甚至将它存储在变量中,如果你在插件中使用它,我想你正在尝试做的事情:

var storage = number_of_image($(this));

0
投票

您需要将$('img')传递给number_of_image()才能使代码正常工作。

工作代码片段:

var count = 0;

function number_of_image(image){
  $(image).each(function(){
    count++;
  }); 
  alert(count);
};

$(document).ready(function(){
  number_of_image($('img'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- 3 sample images -->
<img src="http://pbltech.org/wiki/images/e/e6/Sample.jpg" />
<img src="http://www.officeshop.co.nz/shop/494-664-large/account-overdue-dixon-stamp.jpg" />
<img src="https://d2gg9evh47fn9z.cloudfront.net/thumb_COLOURBOX10334787.jpg" />
© www.soinside.com 2019 - 2024. All rights reserved.