Pat*_*ick 5 javascript hash jquery prototypejs
我知道Javascript原型框架中有一个Hash()对象,但Jquery中有没有这样的东西?
因为我想坚持使用一个javascript框架,而不是混合Prototype Frame工作和JQuery框架并同时使用,因为我担心会有冲突并产生副作用.
所以我的问题是:如何使用jquery创建Hash对象/数组?
这是我的功能:
/* 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);
}
}
Run Code Online (Sandbox Code Playgroud)
有一个名为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);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 0
浏览一下 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;
}
}
Run Code Online (Sandbox Code Playgroud)