Javascript 在jquery中允许在一个函数中使用多个选择器

Javascript 在jquery中允许在一个函数中使用多个选择器,javascript,jquery,Javascript,Jquery,我有一个下拉框,其中允许选择“类别”,如果它被更改,它将加载新类别,如下面的代码所示。我已经介绍了一个“子类别”系统,需要稍微修改一下这段代码。我发现以下信息非常有用: 然而,这并不能完全解决我的问题。。。我可以使用它为同一个函数中的每个选择器运行两个单独的事件,但我需要在同时选择“类别”和“子类别”的事件中同时运行这两个事件。虽然它们还需要能够单独运行,但在事件中仅选择一个。我对js/jquery还比较陌生,所以你能提供的信息越多越好!多谢各位 <script type='te

我有一个下拉框,其中允许选择“类别”,如果它被更改,它将加载新类别,如下面的代码所示。我已经介绍了一个“子类别”系统,需要稍微修改一下这段代码。我发现以下信息非常有用:

然而,这并不能完全解决我的问题。。。我可以使用它为同一个函数中的每个选择器运行两个单独的事件,但我需要在同时选择“类别”和“子类别”的事件中同时运行这两个事件。虽然它们还需要能够单独运行,但在事件中仅选择一个。我对js/jquery还比较陌生,所以你能提供的信息越多越好!多谢各位

    <script type='text/javascript'>
    $(document).ready(function()
    {
        $('select#selectCategory').change(function()
        {
            var cat = $('select#selectCategory').val();
            var subcat

            if(cat > 0)
            {
                var param = '&category_id=' + cat;
            }else{
                var param = '';
            }
            var href = './videoroom.php?action=video_gallery'+ param +'&page=1';
            window.location.href = href;
        });
    });
    </script>

$(文档).ready(函数()
{
$('select#selectCategory')。更改(函数()
{
var cat=$('select#selectCategory').val();
var子载波
如果(类别>0)
{
变量参数='&类别id='+类别;
}否则{
var参数=“”;
}
var href='./videoroom.php?action=video_gallery'+param+'&page=1';
window.location.href=href;
});
});
下面是与已经编写的jquery代码相关的HTML部分:

        <select style="min-weight:100px;" name="filter_by_cat" id="selectCategory">
                <option value="0">All</option>
                <option value="9">Wizard101</option>
                <option value="10">Pirate101</option>
                <option value="11">Pet Derby</option>
                <option value="14">Misc/Fun</option>
        </select>

全部的
巫师101
盗版101
宠物德比
杂项/娱乐
这是我为新创建的子类别添加的新位:

        <select style="min-weight:100px;" name="filter_by_subcat" id="selectSubCategory">
                <option value="0">All</option>
                <option value="21">General PvP</option>
                <option value="22">PvPC Matches</option>
                <option value="23">PvP Guides</option>
                <option value="24">Miscellaneous</option>
        </select>

全部的
通用PvP
PvPC比赛
PvP指南
混杂的

将事件侦听器添加到两个下拉列表中,并在其中一个下拉列表发生更改时检查它们:

我假设您只希望在选择主类别时考虑子类别选择。如果不是这样,请将第二个If语句移到第一个If语句之外


我还对代码进行了一些重构,以使其更易于扩展和(IMO)更干净。我将所有参数添加到一个数组中,它们只是在最后加入。如果您需要添加更多参数,只需将它们也放入数组。

请同时发布HTML。如果适用,jsFiddle.net示例会很有用。@j08691很抱歉,我已经用HTML更新了。对不起,我应该更清楚一点。请发布呈现的HTML——PHP与核心问题无关。子类别的JS在哪里?@j08691我错了,我应该考虑一下。。。修复了。你的脚本在每次选择时都会触发,所以在我被重定向之前,我没有机会选择子类别。@raam86:说得好。我唯一能想到的解决方法是提供一个提交按钮,这样用户可以指定他们选择选项的时间。@Travesty3在添加提交按钮之前,我没有看到您的代码是什么样子的。只要反向更改保存在重定向上,每次更改都可以触发。虽然我认为更好的解决办法是只显示“类别”下拉列表,但一旦选择了“类别”下拉列表,就会提供“子类别”下拉列表。然后,一旦选择了“子类别”下拉列表,它将使用两个值自动触发重定向,而无需提交按钮。这可以做到吗?@RickMartin:我想如果你重定向到的页面上有下拉列表,你可以这样做。我想只要页面加载时间不太长就可以了。如果您建议要求用户在提交查询之前选择子类别,那么您只需要在“子类别”下拉列表中设置该事件侦听器,而不需要在“其他”下拉列表中设置该事件侦听器。此外,您还可以通过单击中间底部的链接查看修订历史记录,该链接显示了修订的时间。既然这听起来像是您更喜欢的解决方案,我将回滚我的编辑。@Travesty3完美。。。按照你的建议,我照着你说的去换了小提琴。我做到了每个框都有一个禁用的选项,这样用户就会意识到他们需要同时更改这两个选项。非常感谢您的帮助,这将很好地解决。。。
$('#selectCategory, #selectSubCategory').change(function() {
    var cat = $('#selectCategory').val();
    var subcat = $('#selectSubCategory').val();

    var params = [
        'action=video_gallery',
        'page=1'
    ];

    if (cat > 0) {
        params.push('category_id='+ cat);
        if (subcat > 0) {
            params.push('subcategory_id='+ subcat);
        }
    }

    var href = './videoroom.php?'+ params.join('&');
    window.location.href = href;
});