首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery Ajax多选择器

jQuery Ajax多选择器
EN

Stack Overflow用户
提问于 2017-03-09 20:09:06
回答 1查看 52关注 0票数 0

我有一个使用ajax填充列表的下拉列表

代码语言:javascript
运行
复制
<select name="ProductSizeType_field" id="ProductSizeType_field">
 <option value="-1">Please Select...</option>
 <option value="NotRequired">Not Required</option>
 <option value="Circumference">Circumference</option>
 <option value="ShoeSize">ShoeSize</option>
 <option selected="" value="WaistSize">WaistSize</option>
 <option value="ShirtSize">ShirtSize</option>
</select>

这将运行一段ajax来填充人员的列表,以选择多个尺寸

代码语言:javascript
运行
复制
$('#ProductSizeType_field').on('change', function (e) {
    var select_id = $(this).val();
    var compare_id = "<?php echo $ProductSizeType; ?>";

    var dataString = 'AjaxCall=ProductSize&compare_id='+compare_id+'&select_id='+select_id;

    jQuery.ajax({
        type: "POST",
        url: "/product.editor.ajax.php",
        data: dataString,
        beforeSend: function(){ 
        },
        complete: function(){ 
            jQuery("Show_ProductSize").show();
        },
        success: function(response){
            jQuery("#ProductSizeSelect_1 ul").append(response);
        }
    });
});

这将返回一组结果。

代码语言:javascript
运行
复制
<div id="ProductSizeSelect_1" class="MultiSelect">
    <ul class="ClearFix">
        <li id="6">
            <div title="UK1">UK1</div>
            <input type="hidden" name="ProductSize_field[]" id="ProductSize6_field" value="">
        </li>
        <li id="7">
            <div title="UK2">UK2</div>
            <input type="hidden" name="ProductSize_field[]" id="ProductSize7_field" value="">
        </li>
        <li id="8">
            <div title="UK3">UK3</div>
            <input type="hidden" name="ProductSize_field[]" id="ProductSize8_field" value="">
        </li>
    </ul>
</div>

我还创建了一个jQuery函数,允许我单击它们高亮显示的大小并选中它们,还可以将ID放入隐藏的输入字段中

代码语言:javascript
运行
复制
$(function () {
    $("#ProductSizeSelect_1 li").click(function () {
        $(this).toggleClass("selected");
        var SizeID = $(this).attr("id");
        var CurrentSizeValue = $('#ProductSize'+SizeID+'_field').val();

        if(CurrentSizeValue === SizeID){
            $('#ProductSize'+SizeID+'_field').val("");
        }else{
            $('#ProductSize'+SizeID+'_field').val(SizeID);
        }
    });
});

但是,返回的结果都不是可点击的。当我单击ajax返回的结果时,什么也没有发生。如果我手动将一些测试结果添加到#ProductSizeSelect_1 ul中,这些结果可以点击并按预期工作,它只是通过ajax返回的结果。

EN

回答 1

Stack Overflow用户

发布于 2017-03-09 20:16:38

您的问题是<li>是动态添加的。您应该将单击函数更改为

代码语言:javascript
运行
复制
$(document).on("click", "#ProductSizeSelect_1 li", function () ...

来避免这个问题。加载jQuery时,该元素不存在,但此时它应该在主体中搜索该元素并找到它。有过几次这样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42695031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档