簡體   English   中英

$(this).addClass不起作用

[英]$(this).addClass is not working

在學習教程時,我看到樣式表未應用於列表中的單擊元素。 可能是什么原因?

如果將一些字符串添加到文本框中,然后單擊按鈕,則下面的示例以這種方式工作,一個新項目被添加到列表中。 如果單擊列表中的項目,則應將其選中。

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#taskText').keydown(function (evt) {  
                if (evt.keyCode == 13) {
                    addTask(this, evt);
                }
            });

            $('#addTask').click(function (evt) {
                addTask(document.getElementById('taskText'), evt);
            });

            // following statements not working 

            $('#tasks li').live('click', function(evt) {
                $(this).addClass('done');

            });});

        function addTask(textBox, evt) {
            evt.preventDefault();
            var taskText = textBox.value;
            $('<li>').text(taskText).appendTo('#tasks'); 
            textBox.value = "";
        };
    </script>
    <style type="text/css">
        .done{
            text-decoration:line-through;
        }
    </style>
</head>
<body>
   <ul id="tasks">
   </ul>
    <input type="text" id="taskText" />
    <input type="submit" id="addTask"/>

</body>
</html>

live()函數已在jQuery 1.7中刪除,在jQuery 2.x中根本不存在。

如果檢查瀏覽器的開發人員控制台,則可能會在這些行中看到錯誤消息。

  $(document).ready(function() { $('#addTask').click(function() { var taskText = $('#taskText').val(); var li = $('<li>' + taskText + '</li>'); $('ul#tasks').append(li); $('#taskText').val(''); $(li).click(function() { $(this).toggleClass('done'); }); }); }); 
 li { font-family: arial; -webkit-font-smoothing: antialiased; -moz-font-smoothing: antialiased; } .done{ text-decoration: line-through; color: red; } 
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <ul id="tasks"> <!-- List Goes Here... --> </ul> <!-- Textbox / Input Buttons --> <input type="text" id="taskText" /> <input type="submit" id="addTask"/> </body> </html> 

$('#tasks li').click(function(){
     $(this).addClass('class-name');
};

應該管用。 檢查並確保所有語法正確(即沒有隨機分號)

正如ceejayoz提到的。 live()函數已在jQuery 1.7中刪除,在jQuery 2.x中根本不存在。

可以在以下問題上更好地解釋您單擊列表不起作用的原因: 使用jquery動態生成的列表項的click事件

這是代碼對您的外觀

 $(document).ready(function() { $('#taskText').keydown(function(evt) { if (evt.keyCode == 13) { addTask(this, evt); } }); $('#addTask').click(function(evt) { addTask($('#taskText'), evt); }); $('#tasks').on('click', 'li', function(evt) { $(this).addClass('done'); }); }); function addTask(textBox, evt) { evt.preventDefault(); var taskText = textBox.val(); $('<li>').text(taskText).appendTo('#tasks'); textBox.val(""); }; 
 .done { text-decoration: line-through; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul id="tasks"> </ul> <input type="text" id="taskText" /> <input type="submit" id="addTask" /> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM