0

我相信我有一个复杂的问题。我通过从另一个页面加载表单jQuery.load(),然后获取它的属性,通过 JSON 解析它并从中获取某些属性。这是JS:

function getFilter() {
        var hash = window.location.hash;
        if(hash.length) {
            var hash2 = hash.replace('#',''),
            exhash = hash2.split('&'),
            getsize = exhash[0],
            size = getsize.split('='),
            getcat = exhash[1],
            cat = getcat.split('=');

            $('.prod').each(function() {
                var link = $(this).attr('data-target');

                $(this).append('<div class="field" style="display: none"></div>');
                $(this).children('.field').load(link + ' form', function() {
                    var el = $(this).parent();
                    var form = $('.field').children('form').attr('data-product_variations'),
                        parse = $.parseJSON(form);
                            var searchTerm = size[1];
                            console.log(parse)
                            $.each(parse, function(i, item) {
                                console.log(item)
                                $.each(item, function(j, innerItem){
                                    if(typeof(innerItem.attribute_pa_rozmiar) != "undefined"){ if(innerItem.attribute_pa_rozmiar == searchTerm)
                                    {
                                        console.log(el);
                                        $(el).children('a').css('background','url('+parse[i].image_src+')');
                                        $(el).children('a').animate({
                                            opacity:1
                                        },200)
                                    }
                                    }
                                });

                            });

                });

            })
        }
    };

我的问题是,两个.proddiv 通常都具有相同的background-image,即使我运行console.log并且值似乎不同。我能做些什么?

4

1 回答 1

2
var form = $('.field').children('form').attr('data-product_variations'),

^ 我相信这条线是你的问题。您没有在当前的“.prod”元素中指定带有类字段的 div。

尝试重写这些行:

$(this).append('<div class="field" style="display: none"></div>');
$(this).children('.field').load(link + ' form', function() {
    var el = $(this).parent();
    var form = $('.field').children('form').attr('data-product_variations'),

改为:

var field = $('<div class="field" style="display: none" />');
$(this).append(field);
field.load(link + ' form', function() {
    var el = $(this).parent();
    var form = field.children('form').attr('data-product_variations'),
于 2013-07-01T15:30:09.150 回答