javascript - div 只追加一次

标签 javascript jquery loops append

我有以下代码:

    switch (caseType) {
        case "dates":
            $.each(array.reverse(), function (index, arr) {
                var $accordionOption = $('<div />', {
                    "class": "option",
                    "data-select": 'option',
                    "data-action": 'makePie',
                    text: arr
                });

                $accordionOption.appendTo($accordionOptionContainer);
                $accordionOption.click(function () {
                    cache.select(this);
                });
            });
            break;
        case "cohort":
            $.each(array, function (index, arr) {
                var $accordionOption = $('<div />', {
                    "class": "option",
                    "data-select": 'option',
                    "data-action": 'makePie',
                    text: arr
                });

                $accordionOption.appendTo($accordionOptionContainer);
                $accordionOption.click(function () {
                    cache.select(this);
                });
            });
            break;
        case "period":

            $.each(array, function (index, arr) {
                console.log(arr)
                var $accordionOption = $('<div />', {
                    "class": "option",
                    "data-select": 'option',
                    "data-action": 'makePie',
                    text: arr
                });

                $accordionOption.appendTo($accordionOptionContainer);
                $accordionOption.click(function () {
                    cache.select(this);
                });
            });
            break;

    }

它成功了,它创建了元素并将其 append 到 DOM。

我想清理它,所以我尝试了这个:

    var $accordionOption = $('<div />', {
        "class": "option",
        "data-select": 'option',
        "data-action": 'makePie'
    });

    switch (caseType) {
        case "dates":
            $.each(array.reverse(), function (index, arr) {
                $accordionOption.text(arr);
                $accordionOption.appendTo($accordionOptionContainer);
            });
            break;
        case "cohort":
            $.each(array, function (index, arr) {
                $accordionOption.text(arr);
                $accordionOption.appendTo($accordionOptionContainer);
            });
            break;
        case "period":

            $.each(array, function (index, arr) {
                $accordionOption.text(arr);
                $accordionOption.appendTo($accordionOptionContainer);
            });
            break;
    }
    $accordionOption.click(function () {
        cache.select(this);
    });

但是,我注意到它只 append 循环中的最后一个数组项。这是因为每次都必须重新创建变量吗?或者因为它在 append 之前将所有内容添加到 Accordion 选项中?或者覆盖相同的变量?

我的最终解决方案:

<小时/>
    function getDiv() {
        return $('<div />', {
            "class": "option",
            "data-select": 'option',
            "data-action": 'makeTable'
        });
    }

    $.each(caseType == "dates" ? array.reverse() : array, function (index, arr) {
        var $accordionOption = getDiv()
                .text(arr)
                .click(function () { cache.select(this) })
                .appendTo($accordionOptionContainer);
    });

最佳答案

简单的内联怎么样,因为唯一的区别是日期中的数组。

$.each(caseType == "dates" ? array.reverse() : array, function(index, arr) {
  var $accordionOption = $('<div />', {
    "class": "option",
    "data-select": 'option',
    "data-action": 'makePie'
  });
  $accordionOption.text(arr);
  $accordionOption.appendTo($accordionOptionContainer);
  $accordionOption.click(function() {
    cache.select(this);
  });
});

关于javascript - div 只追加一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363321/

相关文章:

javascript - ng-flow 抛出 404 错误

javascript - 如何将 HTML POST 数据转换为 JSON?

javascript - Scrollspy 选择了错误的元素

python - 使用 Tweepy 提取一周的推文

javascript - 使用 jQuery 获取隐藏在 html 中的所有输入的值

javascript - 每 500 毫秒 http 请求一次,直到请求完成 Angular

javascript - 使用滚动事件显示基于窗口高度的元素

javascript - img 调整大小,但宽度将停止在 600

ios - 在 Swift 中循环遍历 Realm 对象字段

java - 无法加载二维数组