javascript - 迭代 ul 中的每个 li

标签 javascript jquery html css

我有一个日历。每一天都有以下结构开始。

<td>
    <ul class="calendar-tasks">
    </ul>
</td>

现在,我使用以下命令将任务拖到 ul 内:

$(function() {
    var $tasks = $(".list-tasks"),
        $calendar = $(".calendar-tasks");
    $("li", $tasks).draggable({
        revert: false,
        helper: function (event, ui) {
            return $("<div class='task-image'><span class='icon-pushpin'></span></div>");
        },
        cursorAt: { left: 25 },
        containment: "document",
        zIndex: 500
    });
    $("li", $calendar).draggable({
        revert: false,
        helper: function (event, ui) {
            return $("<div class='task-image'><span class='icon-pushpin'></span></div>");
        },
        cursorAt: { left: 25 },
        containment: "document",
        zIndex: 500
    });
    $calendar.droppable({
        accept: ".list-tasks > li, .calendar-tasks > li",
        activeClass: "highlight-active",
        hoverClass: "highlight-hover",
        drop: function (event, ui) {
            var dropped = $(this).append(ui.draggable);
            var task = $(ui.draggable).attr("data-task"),
                classname = $(ui.draggable).attr("data-class");
            $(this).find("li").each(function() {
                if ($(this).hasClass("has-task")) {
                    // Do nothing
                } else {
                    $(this).find("li").append("<div data-task='" + task + "' class='listed-task " + classname + "'>#" + task + "</div>");
                    $(this).find("li").addClass("has-task");
                }

            });
        }
    });
    $tasks.droppable({
        accept: ".calendar-tasks > li",
        activeClass: "highlight-active2",
        hoverClass: "highlight-hover2",
        drop: function (event, ui) {
            $(this).append(ui.draggable);
        }
    });
});

每一滴都是一个<li></li>本身包含一些内容。每次删除后,li 应该获得一个类 has-task 。我有点努力让这件事发挥作用。一切都发生在下面的代码中:

    $calendar.droppable({
        accept: ".list-tasks > li, .calendar-tasks > li",
        activeClass: "highlight-active",
        hoverClass: "highlight-hover",
        drop: function (event, ui) {
            var dropped = $(this).append(ui.draggable);
            var task = $(ui.draggable).attr("data-task"),
                classname = $(ui.draggable).attr("data-class");
            $(this).find("li").each(function() {
                if ($(this).hasClass("has-task")) {
                    // Do nothing
                } else {
                    $(this).find("li").append("<div data-task='" + task + "' class='listed-task " + classname + "'>#" + task + "</div>");
                    $(this).find("li").addClass("has-task");
                }

            });
        }
    });

我认为如果我迭代每个 <li> this将受到li的约束.

我做错了什么?

最佳答案

第一个 $(this).find("li").each() 函数迭代每个 li 元素。通过再次调用 $(this).find("li").each,您将引用 li 第一个列表中列出的 li 元素code> 元素:我认为不存在。

关于javascript - 迭代 ul 中的每个 li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137012/

相关文章:

html - 弹出 Div 中的文本在移动设备上消失

Javascript 代码可以在 Mozilla Firefox 中运行,但不能在 Google Chrome 中运行

javascript - 如何在 html5 中嵌入智能手机模拟器?

javascript - 在 html 段落中插入 javascript 方法

javascript - 添加和删​​除类,在滚动上应用样式

javascript - Magento 未捕获语法错误 : Unexpected token <

jquery - 如何一次加载多个div

javascript - React.js - 显示/隐藏组件中动态生成的元素

javascript - Rails 4 - 如何禁用 'panzoom' 中的拖动?

javascript - 同位素砌体,不能正常工作