javascript - 移动列表功能无法正常工作

标签 javascript html css

我希望我的应用程序执行以下操作。有 2 个有序列表。一个有元素,另一个是空的。当我将鼠标悬停在文本旁边的第一个列表上时,必须出现一个图像,当我单击该图像时,该文本必须移动到另一个有序列表。如果我单击文本,则不会发生任何事情。根据我第一次点击时所做的,一切正常。如果我点击文字我不会移动,当我点击图片我移动。但在那之后一切都出错了。当我单击图像时,它显示两次我选择的内容,当我第三次单击它时,它显示三次我选择的内容,在第一次选择之后,我能够单击文本将其移动到另一个列表。请帮我解决这个问题。提前致谢。

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Example</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">

        <script type = "text/javascript" src = "js/jquery.js"></script>
        <script type = "text/javascript" src = "js/jquery_ui.js"></script>

        <link rel="stylesheet" href="/resources/demos/style.css">

        <style>
            #feedback { font-size: 1.4em; }
            #firstlist .ui-selecting { background: #FECA40; }
            #firstlist .ui-selected { background: #F39814; color: white; }
            #firstlist { list-style-type: none; margin: 0; padding: 0; width: 20%; }
            #firstlist li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
            #firstlist li:hover img { display: block; }

            #seclist .ui-selecting { background: #FECA40; }
            #seclist .ui-selected { background: #F39814; color: white; }
            #seclist { list-style-type: none; margin: 0; padding: 0; width: 20%; }
            #seclist li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }

            img
            {
                position:relative;
                left:232px;
                top:-25px;
                display:none;
            }
        </style>
    </head>

    <body>

        <table id="myTable">
            <td>
                <tr>
                    <ol id="firstlist">
                        <li>Item 1 <img src="next.jpg" id="next1"></li>
                        <li>Item 2 <img src="next.jpg" id="next2"></li>
                        <li>Item 3 <img src="next.jpg" id="next3"></li>
                        <li>Item 4 <img src="next.jpg" id="next4"></li>
                        <li>Item 5 <img src="next.jpg" id="next5"></li>
                    </ol>
                </tr>

                <tr>
                    <ul class = "seclist" id = "seclist">
                    </ul>
                </tr>
            </td>
        </table>

        <script language="javascript">
            //function to display the immage
            function show(id,disp) {
                if (disp == true) {
                    id.style.display = "block";
                }

                if (disp == false) {
                    id.style.display = "none";
                }
            }
        </script>

        <script>        
            $(function(){
                $( "#firstlist" ).selectable();
            });

            $(function() {
                $( "#seclist" ).selectable();
            });

            $("img").click(function() {
                $('#firstlist li').click(function(){
                    var $this = $(this),
                    text = $this.text();
                    $('<li />', {html: text}).appendTo('ul.seclist')
                });
            });
        </script>
    </body>
</html>

最佳答案

您错误地嵌套了事件处理程序。每次点击<img>它正在将一个新的事件处理程序附加到 #firstlist li ,这将在您的 img 中每次出现任何内容(包括您的 <li> 标签)时触发一个事件。被点击。每次点击 <img>标记它附加一个新事件(不清除旧事件)并触发现有的附加事件。这就是为什么第一次点击没有响应,第二次触发一次,第三次触发两次,依此类推。

尝试改变这个:

$("img").click(function() {
    $('#firstlist li').click(function(){
        var $this = $(this),
        text = $this.text();
        $('<li />', {html: text}).appendTo('ul.seclist')
    });
});

对此:

$('#firstlist li img').click(function(){
    var $this = $(this),
    text = $this.parent().text();
    $('<li />', {html: text}).appendTo('ul.seclist')
});

关于javascript - 移动列表功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24884488/

相关文章:

Javascript 在函数内获取

html - 不透明度 < 1 的元素不在第一列时不会在 chrome 中呈现

html - CSS : Clamp divs to top and bottom in an inline container

css - 使用CSS3 native 创建倒 Angular 半径

css - 容器内的响应式文本大小问题

javascript - 如何在textarea中的enter键上换行

javascript - 如何将 Naver Analytics 添加到 Nuxt.js SPA 应用程序?

html - CSS 是否出错?

javascript - 带有 Wordpress 循环的 jQuery。显示/隐藏内容?

html - div之间的空白