0

昨天玩了几个小时后,想到了寻求您的帮助。不知道以前是否有人问过这种问题,但在那里找不到任何帮助。

我有 4 个相关的下拉菜单,它从sql下拉数据库中获取数据change。在 上change,jQuery 将它的 ID 传递给一个 php 文件并获取它的下拉数据。它使用nextnextAll更新相关的下拉菜单。

我的问题

当我在下拉列表周围放置一个 div 时,它们不再加载数据。我尝试了 change .updatetodiv .update和其他 100 种方法,但都没有奏效。

我的代码

var formObject = {
    run : function(obj) {
        if (obj.val() === '') {
            obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
        } else {
            var id = obj.attr('id');
            var v = obj.val();
            jQuery.getJSON('/pfi/mod/update.php', { id : id, value : v }, function(data) {
                if (!data.error) {
                    obj.next('.update').html(data.list).removeAttr('disabled');
                    $('.findCar, .clearAll').fadeOut();  // hide Car button if more data available

                } else {
                    obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
                    $('.findCar, .clearAll').fadeIn();  // show Car button

                }
            });
        }
    }
};
$(function() {

    $('.update').live('change', function() {
        formObject.run($(this));
        $getCarInfoID = $(".update:not(:disabled)").last().val();
    });

});

HTML 下拉菜单

    <form action="" id="pfilterForm" method="post">
    <div>
    <select name="brand" id="brand" class="update">
        <option value="">Select one</option>
        <?php if (!empty($list)) { ?>
            <?php foreach($list as $row) { ?>
                <option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
            <?php } ?>
        <?php } ?>
    </select>
    </div><div>

    <select name="make" id="make" class="update"
        disabled="disabled">
        <option value="">----</option>
    </select>
    </div><div>
  <select name="series" id="series" class="update"
        disabled="disabled">
        <option value="">----</option>
    </select>
    </div><div>
    <select name="model" id="model" class="update"
        disabled="disabled">
        <option value="">----</option>
    </select>
    </div> 
    <button name="data" type="button" class="findCar" onclick="getData()" style="display:none;"  >GO</button>
    <button name="data" type="button" class="clearAll" onclick="clearData()" style="display:none;"  >Clear</button>

</form>

我怎样才能让它与div下拉菜单一起使用?我使用本教程来完成此操作

4

1 回答 1

0

您依赖next()nextAll选择元素。这将在很大程度上依赖于文档的结构。

如果您想定位特定元素,您可以通过它们的 ID 获取它们,因为它们已经具有唯一的 ID。

编辑:仍然严重依赖 html 的快速解决方案(因此就我而言并不真正推荐......)是从您的元素移动到其父元素并从那里获取它。

例如:

obj.nextAll('.update')

会变成这样:

obj.parent().nextAll().find('.update')
于 2013-06-11T01:42:24.793 回答