Javascript jquery:编写一个方法

Javascript jquery:编写一个方法,javascript,jquery,Javascript,Jquery,这是与此相同的问题: 但这个问题提出得很糟糕 再试一次,我试着这样做: jQuery.fn.grabData = function(expr) { return this.each(function() { var self = $(this); self.find("span").each(function (){ var info = $(this).attr('class');

这是与此相同的问题:

但这个问题提出得很糟糕

再试一次,我试着这样做:

jQuery.fn.grabData = function(expr) {
    return this.each(function() {
        var self = $(this);             
        self.find("span").each(function (){
            var info = $(this).attr('class');
            collection += info;
        });
    });
};
var collection = '';
$('#container').grabData();
$('#container2').grabData();
var collection = $('#container').grabData();
console.log(collection);
我有一堆我想从中获取数据的元素,数据是以元素子类的形式存在的

<div id='container'>
    <span class='a'></span>
    <span class='b'></span>
    <span class='c'></span>
</div>
<div id='container2'>
    <span class='1'></span>
    <span class='2'></span>
    <span class='3'></span>
</div>
我希望像这样运行该方法:

jQuery.fn.grabData = function(expr) {
    return this.each(function() {
        var self = $(this);             
        self.find("span").each(function (){
            var info = $(this).attr('class');
            collection += info;
        });
    });
};
var collection = '';
$('#container').grabData();
$('#container2').grabData();
var collection = $('#container').grabData();
console.log(collection);
集合应该相互添加,以便最终我得到这个

console.log(collection);
:

但方法中未定义集合。如何让方法知道它应该添加到哪个集合


谢谢。

如果要为
grabData
函数的每次调用累积值,则需要一个全局变量:

var collection = '';
jQuery.fn.grabData = function(expr) {
    return this.each(function() {
        var self = $(this);             
        self.find('span').each(function () {
            var info = $(this).attr('class');
            collection += info;
        });
    });
};
另一方面,如果只想对
grabData
函数的单个调用执行此操作,则可以执行以下操作:

jQuery.fn.grabData = function(expr) {
    var collection = '';
    this.each(function() {
        var self = $(this);             
        self.find('span').each(function () {
            var info = $(this).attr('class');
            collection += info;
        });
    });
    return collection;
};
然后像这样使用它:

jQuery.fn.grabData = function(expr) {
    return this.each(function() {
        var self = $(this);             
        self.find("span").each(function (){
            var info = $(this).attr('class');
            collection += info;
        });
    });
};
var collection = '';
$('#container').grabData();
$('#container2').grabData();
var collection = $('#container').grabData();
console.log(collection);

对于第一种类型,这与我在问题中遇到的情况不一样吗?未定义给出错误集合的。不完全相同。将
var collection=''
放在
文档的外部。ready
函数。我想,在你的情况下,你把它放在里面,因为你正在使用插件后不久。