javascript - JQuery-appendTo() 的问题

标签 javascript jquery html dom

我正在将元素从一个列表移动到另一个列表,问题是: 我有 javascript 绑定(bind)函数到 <li>取决于<ul> ,如果我点击一个<li>位于 <ul> 内使用特定的ID,执行一个函数。

当我移动<li>时如果成功,则假定 <li>已经在另一个 <ul> (目的地一)。但如果我点击<li>在新列表中,事件仍然与源事件绑定(bind) <ul>

如何绑定(bind) <li>当前<ul>

感谢您的帮助。

<ul id="sourceList">
     <li>element1</li>
     <li>element2</li>
</ul>

<ul id="destinationList"></ul>

<script>

        $('#sourceList li').click(function () {
                $(this).appendTo('#destinationList');
                console.log("from source");
            });

        $('#destinationList li').on("click", function () {
            $(this).appendTo('#sourceList');
            console.log("from destination");
        });

</script>

最佳答案

第一次执行脚本时会绑定(bind)事件,因此在您的代码中,#sourceList 中的每个 li 都有一个附加到第一个定义的事件监听器的点击事件,无论您是否将元素移动到另一个容器。您需要为此使用事件委托(delegate):

$('#sourceList').on('click', 'li', function () {
    $(this).appendTo('#destinationList');
    console.log("from source");
});

$('#destinationList').on('click', 'li', function () {
    $(this).appendTo('#sourceList');
    console.log("from destination");
});

关于javascript - JQuery-appendTo() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50860839/

相关文章:

javascript - 抓取亚马逊品牌页面

javascript - jQuery 将 css 链接附加到 iframe head

javascript - ng-click 需要两次点击才能查看更新

javascript - 如何将 jQuery 注入(inject) Angular 1.5 组件

javascript - For Each 循环中的多个 Mongoose 调用

javascript - "SCRIPT1028: Expected identifier, string or number"在 ie7 和 ie8 中

html - WordPress无法将文件写入磁盘

javascript - 使用核心选择器的 polymer - 如何使用数组设置选定值

javascript - Coffeescript 解析意外错误 '.'

javascript - 当用户刷新或离开网页时调用ajax函数