【问题标题】:jquery filter from drop downjquery从下拉列表中过滤
【发布时间】:2011-05-03 02:18:43
【问题描述】:

我想知道如何创建一个选项来根据下拉列表过滤内容。我不是在寻找插件,只要这不是困难的事情。这是从下拉列表中选择选项时我需要做的一个示例:

<select name="division-select" id="division-select">
 <option value="halter">Halter</option>
 <option value="english">English</option>
</select>

<div>
 <p class="halter">halter class 1</p>
 <p class="halter">halter class 2</p>
 <p class="english">english class 1</p>
 <p class="english">english class 2</p>
</div>

所以我想发生的是当从下拉框中选择时,选择的选项将自动隐藏任何不具有等于选项值的类的类的段落。

这可能吗?

感谢您对此提供的任何帮助。

罗伯

【问题讨论】:

    标签: jquery


    【解决方案1】:
    $("#division-select").bind("change", function() {
        $("." + this.value).show();
        $("p:not(." + this.value + ")").hide();
    });
    

    这是一个工作示例:http://jsfiddle.net/andrewwhitaker/KcStv/

    注意事项:

    • 将事件处理程序绑定到select 元素的change 事件。
    • 在与当前选择值 (this.value) 的类相同的元素上调用 show()
    • hide()s 使用 :not 选择器的其他 p 标签没有该类。

    【讨论】:

    • 您仍然需要在末尾附加一个.change() 以手动触发,否则它将显示所有&lt;p&gt; 而不管默认选择如何
    • OP 没有提到在页面加载时隐藏任何内容,但是可以做到这一点。
    【解决方案2】:
    $('#division-select').change(function() {
        var matches = $('div > p.' + $(this).val());
        matches.show().siblings().not(matches).hide();
    });
    

    jsFiddle.

    如果您希望它在加载时发挥作用,请在附加事件后链接 change() 以触发它。

    【讨论】:

    • 您应该在末尾添加一个.change() 事件以手动触发它,否则将显示所有&lt;p&gt; 而不管它们默认选择的http://jsfiddle.net/drBRf/1/
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 2018-04-28
    • 2013-01-24
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多