如何使用jquery创建Hash对象/数组?

我知道Javascript原型框架中有一个Hash()对象,但Jquery中有没有这样的东西?

因为我想坚持使用一个javascript框架,而不是混合原型框架工作和JQuery框架并同时使用,因为我担心会有冲突并产生副作用。

所以我的问题是:如何使用jquery创建Hash对象/数组?

这是我的function:

/* prototype framework, I want to change this to jQuery! */ var starSaves = new Hash(); function myHover(id, pos) { var starStrip = $('star_strip_' + id); if (starSaves.keys().indexOf(id) == -1) { var starSave = new Array(); var imgs = starStrip.select("img") alert(imgs); for (var i = 0; i < imgs.length; i++) { starSave[starSave.length] = imgs[i].src; if (i < pos) imgs[i].src = "/images/star_1.gif"; else imgs[i].src = "/images/star_0.gif"; } starSaves.set(id, starSave); } } 

有一个名为jshashtable的独立哈希表实现(完全披露:我写了它)。 使用它,您的代码将是:

 var starSaves = new Hashtable(); function myHover(id, pos) { var starStrip = $('star_strip_' + id); if (!starSaves.containsKey(id)) { var starSave = new Array(); var imgs = starStrip.select("img") alert(imgs); for (var i = 0; i < imgs.length; i++) { starSave[starSave.length] = imgs[i].src; if (i < pos) imgs[i].src = "/images/star_1.gif"; else imgs[i].src = "/images/star_0.gif"; } starSaves.put(id, starSave); } } 

基本的Hash可以用基本的JavaScript实现,而不是jQuery(我知道Prototype的Hash增加了额外的function,但你不在这里使用它)。

 var starSaves = {}; function myHover(id, pos) { if (!starSaves.hasOwnProperty(id)) { var starSave = starSaves[id] = []; $('#star_strip_' + id + ' img').attr('src', function (index, current) { starSave.push(current); return (index < pos) ? '/images/star_1.gif' : '/images/star_0.gif'; }); } } 

我认为你不需要jQuery。

 var hashtable = { hash: {}, exists: function(key){ return this.hash.hasOwnProperty(key); }, get: function(key){ return this.exists(key)?this.hash[key]:null; }, put: function(key, value){ this.hash[key] = value; } } 

浏览jQuery文档,我没有看到任何专门用于此的内容。 但是你只需要一个普通的javascript对象就可以轻松完成:

 var starSaves = {}; function myHover(id, pos) { var starStrip = $('star_strip_' + id); if (typeof starSaves[id] == 'undefined') { var starSave = new Array(); var imgs = starStrip.select("img") alert(imgs); for (var i = 0; i < imgs.length; i++) { starSave[starSave.length] = imgs[i].src; if (i < pos) imgs[i].src = "/images/star_1.gif"; else imgs[i].src = "/images/star_0.gif"; } starSaves[id] = starSave; } } 

我知道jQuery中没有原型Hash等价物。

以下内容对您有用吗? 使用jQuery

 var starSaves = {}; function myHover(id,pos) { var starStrip = $('.star_strip_' + id); if(!starSaves[id]) { var starSave = []; starStrip.each(function(index,element){ starSave[index] = $(element).attr('src'); $(element).attr('src', index < pos ? '/images/star_1.gif' : '/images/star_0.gif'); }); starSaves[id] = starSave; } }