jQuery过滤器通过文本输入选择选项

时间:2015-12-10 09:03:57

标签: javascript jquery

我有一个选择列表,我想从文本输入中过滤选项。

我写了这个jQuery代码:

SERIALIZABLE

但是我收到错误$('#NotPublishedSelectFilter').keyup(function () { console.log("NotPublishedSelectFilter keyup"); var filterText = $(this).val(); console.log("filterText: " + filterText); var allOptions = $('#NotPublishedSelect').find('option'); allOptions.each(function (i, e) { console.log(i); if (e.text().indexOf(filterText) != -1) { e.show(); console.log("show"); } else { e.hide(); console.log("hide"); } }); }); 。我进入每个循环所以应该有一些选项e。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试在循环中更改选择器: -

$('#NotPublishedSelectFilter').keyup(function () {
    console.log("NotPublishedSelectFilter keyup");
    var filterText = $(this).val();
    console.log("filterText: " + filterText);
    var allOptions = $('#NotPublishedSelect').find('option');
    allOptions.each(function (i, e) {
        console.log(i);
        if ($(e).text().indexOf(filterText) != -1) {
            $(e).show();
            console.log("show");
        } else {
            $(e).hide();
            console.log("hide");
        }
    });
});

它可能对你有帮助。

答案 1 :(得分:2)

您必须使用jQuery对象中的当前值才能访问.text()方法。尝试:

    $('#NotPublishedSelectFilter').keyup(function () {
        console.log("NotPublishedSelectFilter keyup");
        var filterText = $(this).val();
        console.log("filterText: " + filterText);
        var allOptions = $('#NotPublishedSelect').find('option');
        allOptions.each(function (i, e) {
            console.log(i);
            if ($(this).text().indexOf(filterText) != -1) {
                $(this).show();
                console.log("show");
            } else {
                $(this).hide();
                console.log("hide");
            }
        });
    });

答案 2 :(得分:1)

您需要对象变量,但需要访问事件变量。所以请使用这个

$('#NotPublishedSelectFilter').keyup(function () {
    console.log("NotPublishedSelectFilter keyup");
    var filterText = $(this).val();
    console.log("filterText: " + filterText);
    var allOptions = $('#NotPublishedSelect').find('option');
    allOptions.each(function (i, e) {
        console.log(i);
        $(this).text()
        if ($(this).text().indexOf(filterText) != -1) {
            $(this).show();
            console.log("show");
        } else {
            $(this).hide();
            console.log("hide");
        }
    });
});