如何在jQuery中处理动态创建元素的事件

如何在jQuery中处理动态创建元素的事件

当我们想把任何事件绑定到一个元素时,通常我们可以直接使用on()方法绑定到每个元素的任何事件。

实例1:本实例使用jQuery on()方法动态添加段落元素。

<!DOCTYPE html>
<html>
  
<head>
    <title>
        How to handle events in dynamically 
        created elements in jQuery?
    </title>
  
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
  
    <script>
        (document).ready(function () {
            ("#list li").on("click", function (event) {
                $('#list').append('<li>New Paragraph</li>');
            });
        }); 
    </script>
  
    <style>
        li {
            font-size: 30px;
            width: 400px;
            padding: 20px;
            color: green;
        }
    </style>
</head>
  
<body>
    <!-- Click on this paragraph -->
    <ul id="list">
        <li>Click here to append !!!</li>
    </ul>
</body>
  
</html>

输出:
如何在jQuery中处理动态创建元素的事件?

这样做真的很好,但是当我们添加一个新的列表项并点击它时,什么也没有发生。这是因为之前附加的事件处理程序在文档加载时被执行。当时只有第一个列表项存在,而没有新的列表项。因此,.on()方法只应用于第一个列表项,而不是其他的。

例子2:下面的例子是用on()方法实现的。

<!DOCTYPE html>
<html>
  
<head>
    <title>
        How to handle events in dynamically 
        created elements in jQuery?
    </title>
  
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
  
    <script>
        (document).ready(function () {
            ("#list").on("click", 
                    "li", function (event) {
                $('#list').append(
                    '<li>New Paragraph</li>');
            });
        }); 
    </script>
      
    <style>
        li {
            font-size: 30px;
            width: 400px;
            padding: 20px;
            color: green;
        }
    </style>
</head>
  
<body>
    <ul id="list">
  
        <!-- Click on this item -->
        <li>Click here to check on()!!!</li>
    </ul>
</body>
  
</html>

输出:
如何在jQuery中处理动态创建元素的事件?

例子3:下面的例子是用delegate()函数实现的。为了将事件处理程序绑定到动态创建的元素,我们将使用事件委托在点击新的列表项时,会执行同样的动作。

事件委托是一个过程,它允许我们在父元素上附加一个单一的事件监听器,它将对现在存在的或将来要添加的所有子元素起作用。on()和delegate()函数都允许我们进行事件委托。

<!DOCTYPE html>
<html>
  
<head>
    <title>
        How to handle events in dynamically
        created elements in jQuery?
    </title>
  
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
  
    <script>
        (document).ready(function () {
            ("#list").delegate("li", 
                "click", function (event) {
  
                $('#list').append(
                    '<li>New Paragraph</li>');
            });
        }); 
    </script>
  
    <style>
        li {
            font-size: 30px;
            width: 400px;
            padding: 20px;
            color: green;
        }
    </style>
</head>
  
<body>
    <ul id="list">
  
        <!-- Click on this item -->
        <li>Click to check delegate !!!</li>
    </ul>
</body>
 
</html>

输出:
如何在jQuery中处理动态创建元素的事件?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程