javascript - 根据 slider 值显示和隐藏元素

标签 javascript jquery

我正在尝试制作一个 slider ,以在移动 slider (ui.value)时显示和隐藏元素。

首先,我使用 jquery 创建元素(复选框):

var start = 1;

$(new Array(30)).each(function () {

    $('#showChck').prepend(
        $('<input/>', {type:"checkbox", name:"checkbox-" + start, id:"checkbox-" + start, class:"custom", style:"display:none;", title: "Cambiar los canales que tendrá la linea: " + start}),
        $('<label/>', {for: 'checkbox-' + start, id:"label-" + start, style:"display:none;"}).text(start)
    );

    start++;
});

现在我有 30 个复选框,它们被隐藏了。我想根据 slider 值显示和隐藏它们:

$("#slider").slider({
    min: 1,
    max: 30,
    value: 1,

    slide: function( event, ui ) {
        $( "#result" ).html( ui.value );

        var startx = 1;

        $(new Array(ui.value)).each(function () {
            // Get elements ID
            var checkbox = $("#checkbox-" + startx);
            var label = $("#label-" + startx);
            //var slider = $("#slider-" + startx);

            if (1 == 1) {
                if ($(checkbox).is(":checked")) {
                    //$(checkbox).attr("checked", false);
                    //slider.show();
                }
                checkbox.show();
                label.show();
            }
            else {
                if ($(checkbox).is(":checked")) {
                    //$(checkbox).attr("checked", false);
                    //slider.hide();
                }
                checkbox.hide();
                label.hide();
            }

            startx++;
        });
    }
});

最佳答案

你会发现它更简单:

  • 嵌套 <input> <label> 内的元素元素。这样,您只需要显示/隐藏标签,它们各自的输入就会自动显示/隐藏。
  • 通过过滤 jQuery 集合而不是显式循环来选择要显示/隐藏的相关标签。正如 jQuery 网站所说,“少写,多做”。

JavaScript 将是这样的:

$(document).ready(function() {
    var N = 30,
        initVal = 5;

    for (var i = 1; i <= N; i++) {
        $('<label/>', {
            id: "label-" + i
        }).append($('<input/>', {
            type: "checkbox",
            name: "checkbox-" + i,
            class: "custom",
            title: "Cambiar los canales que tendrá la linea: " + i
        })).append(i).prependTo("#showChck");
    }

    $("#slider").slider({
        min: 0,
        max: N,
        value: initVal,
        slide: function(event, ui) {
            $("#result").html(ui.value);
            $("#showChck label").show().filter(":lt(" + (N-ui.value) + ")").hide();
        }
    }).slider('option', 'slide')(null, { value: initVal });
});

最后一行是 jQuery UI 的繁琐语法,用于触发初始值的“slide”事件。如果你不需要这个功能,那就删除它或者直接设置 initVal到 0。

<强> DEMO

关于javascript - 根据 slider 值显示和隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30406743/

相关文章:

javascript - Lerp 背景颜色基于一天中的时间

javascript - 使用 JQuery 提交 GET 表单时如何更改查询字符串?

javascript - 如何增加jquery json中的自定义计数

javascript - 我在我的 ul 中添加了一个 li,虽然它有效,但会导致错误

javascript - 更新包布局上的困惑数据

javascript - 使用错误记录处理处理管道的惯用功能方法是什么?

javascript - jQuery 选择多个元素是否具有相同的类

javascript - 更改 iframe 的 src 不起作用

javascript - Jquery,点击标题,打开面板主体

javascript - 电子邮件正则表达式问题