javascript - 动态下拉菜单不会填充正确的内容

标签 javascript jquery json

我正在构建一个脚本,它从 JSON 文件中获取一些内容并动态构建一些 html。 Html 将一些产品信息显示为某种外观手册。

html 里面有一些下拉框。这些盒子也是动态创建的。除了最后一个下拉框中的内容用于构建的每个下拉列表之外,一切都工作正常。见附图: enter image description here

我个人认为发生这种情况的原因是因为变体是在实际的HTML构建之前构建和附加的??!

$('#sets .set').each( function(){
    ....
    $.getJSON(url, function (data){
        var product = data.product;
        var $container = $('.products .product');
        var productsHtml = [];

        $.each(product.related, function(index, rel){
            $.getJSON(url, function (data){
                var rel = data.product;
                var wqsSelectVariants = $('<div class="product-configure-variants tui" />');
                var select = $('<select id="product_configure_variants"/>');

                $.each(rel.variants, function (index, variant){
                    select.append('<option value=' + variant.id + '>' + variant.title + '</option>');
                    wqsSelectVariants.append(select);
                });

                $('.varianten').html(wqsSelectVariants);
            });

            var productHtml = '' + '<div class="p"><div class="foto"><a href="'+fullurl+''+rel.url+'"><img class="rollover" src="'+image+'" hover="'+image2+'" alt="'+rel.fulltitle+'"/></a></div><div class="prijs" data-price="'+rel.price.price_incl+'">€'+rel.price.price_incl+'</div><div class="varianten"></div></div>';
            productsHtml.push(productHtml);
        });

        productsHtml = productsHtml.join('');
        $container.html(productsHtml);
    });
});

HTML

<div class="set">
    <div class="right">
        <div class="products">
            <div class="close"></div>
            <div class="product">
                **-- in here the content from the script example below --**
                <div class="p">
                    <div class="foto">
                        <a href="zwart.html">
                            <img alt="Enkellaars zwart" hover="image.jpg" src="image2.jpg" class="rollover">
                        </a>
                    </div>
                    <div data-price="39.95" class="prijs">€39.95</div>
                    <div class="varianten">
                        <div class="product-configure-variants tui">
                            <select id="product_configure_variants">
                                <option value="9996912">Maat: M/L</option>
                            </select>
                        </div>
                    </div>
                </div>
            </div>
        </div><!-- .products -->
    </div><!-- .right -->
    <div class="image">
        <img src="{{ product.image | url_image('220x330x2', product.fulltitle) }}" width="220" height="330" alt="{{ product.fulltitle }}" />
    </div>
</div>         

有人知道我做错了什么吗?

最佳答案

$('#sets .set').each()循环中,.set的当前实例是this

因此,您可以通过仅在当前实例内遍历来隔离每个 .set'.varianten'

 $('#sets .set').each( function(){
      var $variant =$(this).find('.varianten');

      /* do all the ajax stuff */
});

然后更改行:

$('.varianten').html(wqsSelectVariants);

$variant.html(wqsSelectVariants);

请注意,ID 在页面中也必须是唯一的。

关于javascript - 动态下拉菜单不会填充正确的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468560/

相关文章:

javascript - 为什么chrome会显示弹窗警告: "Changes you made may not have been saved." on every page exit?

javascript - Angular 2 *ngIf true -> 渲染按钮

javascript - 滚动到非常长的下拉菜单的键盘输入上的元素

php - XML AJAX 响应开头有奇怪的字符?

javascript - 使用 JSON 填充 DataTable,需要在一个列中呈现一个超链接,其中包含在不同 JSON 字段中找到的值

javascript - 如何使十字准线远离 d3.js 的边缘?

javascript - 如何在 JavaScript 中搜索全局变量

javascript - 无法使用我的数组项通过 JQuery 预填充我的表单输入

java - Gson、解析json内部类列表、javabean

javascript - 链接 ngResource promise