首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery的级联选择框

使用jQuery的级联选择框
EN

Stack Overflow用户
提问于 2013-07-17 04:40:38
回答 1查看 2.2K关注 0票数 0

我想级联与html选择框和jQuery ajax帖子。当我选择一个选项时,它会将自己的值发送到另一个文件并获取json值。是的,我用ajax post做到了这一点。但在回调函数中,我将添加另一个选择框集,所有jSON数据。我这样做是正确的。但是当我从添加的选择框中选择一个选项时,jQuery 'change‘事件不会处理这个新的选择框,最终也不会处理其他功能。

我的jQuery代码如下:

代码语言:javascript
复制
$(document).ready(function(){

    $("#kategoriler select").on('change',function(e){

        var catID = $(this).val();

        if($(this).next().is("select")){
            $(this).nextAll("select").remove();
        }

        console.log($(this));
        $.ajax({
            async: false,
            type: "POST",
            url: "ajax_cate_add",
            data: "catID=" + catID,

            success: function(data){

                if(data.length > 0){

                    var $parent = $("#kategoriler select:last").after("<select></select>").next();

                    for(var i = 0; i < data.length; i++){
                        $parent.append("<option value=" + data[i].id + ">" + data[i].tr_adi + "</option>");
                    }
                }
            }
        });
    });
});

开始HTML代码如下:

代码语言:javascript
复制
<div id="kategoriler">
    <select>
        <option value="8">Rezervasyon</option>
        <option value="7">E-Concierge</option>
        <option value="6">Özel F?rsatlar</option>
        <option value="5">Safira SPA &amp; Sa?l?k</option>
        <option value="4">Toplant? &amp; Davetler</option>
        <option value="3">Yeme &amp; ?çme</option>
        <option value="2">Odalar &amp; Süitler</option>
        <option value="1">Genel Bak??</option>
    </select>
</div>

但在控制台中,当我输入以下代码时,它正在运行:

代码语言:javascript
复制
 $("select").change(function(){
      alert(2);
 });

从根选择框中选择一个选项,然后在上面的代码之后,我在控制台中键入,并从新的选择框中选择一个选项,此代码确实起作用并显示警告消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 04:45:57

在绑定时,即创建更改处理程序时,DOM中不存在该元素(select元素)(因为它是动态生成的)。因此,它没有绑定change处理程序,因为没有要绑定的元素。因此,一种简单的解决方案是使用委托。现在,使用委托的好处在于,无论何时创建元素,都会将处理程序分配给该元素。这对你来说应该是有用的。

代码语言:javascript
复制
$(document).on('change','select', function(){
    alert('test');
});

PS:当你必须在路上(动态地)创建元素时,你应该尝试使用委托。

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

https://stackoverflow.com/questions/17686552

复制
相关文章

相似问题

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