Как создать объект/массив Хеша с помощью jQuery?

Я знаю, что существует Хеш () объект в опытной платформе JavaScript, но там что-нибудь в JQuery как это?

Поскольку я хотел бы придерживаться одной платформы JavaScript, вместо того, чтобы смешать Опытную Основу и платформу JQuery и использование одновременно, поскольку я волнуюсь, что будет конфликт и создаст побочные эффекты.

Таким образом, мой вопрос: как создать объект/массив Хеша с помощью jQuery?

Вот моя функция:

/* 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);
    }
}
5
задан Rob W 28 December 2011 в 22:24
поделиться

4 ответа

Существует отдельная реализация хэш-таблицы под названием 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);
    }
}
5
ответ дан 18 December 2019 в 16:36
поделиться

Базовый Hash можно получить с помощью базового JavaScript, а не jQuery (я знаю, что Hash от Prototype добавляет дополнительную функциональность, но вы не используете его здесь).

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';
        });        
    }
}
4
ответ дан 18 December 2019 в 16:36
поделиться

В 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;
    }
}
0
ответ дан 18 December 2019 в 16:36
поделиться

Глядя на документацию 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;
    }
}
0
ответ дан 18 December 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: