使用JQuery的级联下拉列表

使用JQuery的级联下拉列表,jquery,xml,Jquery,Xml,我尝试使用JQuery和XML级联三个下拉列表。到目前为止,我有前两个工作下拉列表工作,但我一直无法得到第三个工作 基于XML,第一个下拉列表用main元素填充,第二个下拉列表用基于第一个元素的元素填充,第三个下拉列表用第二个元素填充。但是,第三个下拉列表中没有任何XML内容 以下是XML的一个示例: <categories> <main name="Main category A"> <first name="Sub Categor

我尝试使用JQuery和XML级联三个下拉列表。到目前为止,我有前两个工作下拉列表工作,但我一直无法得到第三个工作

基于XML,第一个下拉列表用main元素填充,第二个下拉列表用基于第一个元素的元素填充,第三个下拉列表用第二个元素填充。但是,第三个下拉列表中没有任何XML内容

以下是XML的一个示例:

    <categories>
    <main name="Main category A">
        <first name="Sub Category A">
            <second>Sub Category B1</second>
            <second>Sub Category B2</second>
            <second>Sub Category B3</second>
            <second>Sub Category B4</second>
            <second>Sub Category B5</second>
        </first>
    </main>
    <main name="Main category B">
         <first name="Sub Category A">
            <second>Sub Category B1</second>
            <second>Sub Category B2</second>
            <second>Sub Category B3</second>
            <second>Sub Category B4</second>
            <second>Sub Category B5</second>
         </first>
    </main>   
HTML:

JQuery:

<script>
    $(document).ready(function () {
        var categories;
        $.get('category_listing.xml', function (data) {
            categories = data;
            var object = $('#categoryTxtBox');
            $('main', categories).each(function () {
                $('<option>').text($(this).attr('name')).appendTo(object);
            });
        }, 'xml');

        $('#categoryTxtBox').change(function () {
            var val = $(this).val();
            var that = $('#subCategoryTxtBox').empty();
            $('main', categories).filter(function () {
                return val == $(this).attr('name');
            }).find('first').each(function () {
                $('<option>').text($(this).attr('name')).appendTo(that);
            });
        });

        $('#subCategoryTxtBox').change(function () {
            var mainVal = $('#categoryTxtBox').val();
            var subVal = $(this).val();
            var that = $('subCategory2TxtBox').empty();
            $('main', categories).filter(function(){
                return mainVal == $(this).attr('name');
            }).find('first').filter(function(){
                return subVal == $(this).attr('name');
            }).find('second').each(function () {
                $('<option>').text($(this).text()).appendTo(that);
            });
        });
    });
</script>

问题出在JQuery的第三个块中,但我似乎无法找出它不起作用的原因。任何帮助都将不胜感激。

您应该使用来进行演示。你还没有说你的问题到底是什么。我将在JSFIDLE上工作。我的问题是,第三个下拉列表中没有来自XML的任何内容。这肯定只是Jquery代码的第三块不起作用。第一个块填充第一个下拉列表,第二个块填充第二个下拉列表..以此类推。我正在尝试获取代码,以根据在第二个下拉列表中选择的内容填充第三个下拉列表。
<script>
    $(document).ready(function () {
        var categories;
        $.get('category_listing.xml', function (data) {
            categories = data;
            var object = $('#categoryTxtBox');
            $('main', categories).each(function () {
                $('<option>').text($(this).attr('name')).appendTo(object);
            });
        }, 'xml');

        $('#categoryTxtBox').change(function () {
            var val = $(this).val();
            var that = $('#subCategoryTxtBox').empty();
            $('main', categories).filter(function () {
                return val == $(this).attr('name');
            }).find('first').each(function () {
                $('<option>').text($(this).attr('name')).appendTo(that);
            });
        });

        $('#subCategoryTxtBox').change(function () {
            var mainVal = $('#categoryTxtBox').val();
            var subVal = $(this).val();
            var that = $('subCategory2TxtBox').empty();
            $('main', categories).filter(function(){
                return mainVal == $(this).attr('name');
            }).find('first').filter(function(){
                return subVal == $(this).attr('name');
            }).find('second').each(function () {
                $('<option>').text($(this).text()).appendTo(that);
            });
        });
    });
</script>