当用户单击具有称为card的类的p标签时,我试图使我的document.on函数起作用。到目前为止,该功能没有响应。我应该更改什么,以便当我单击具有称为card的类的p标签时该功能将响应。这是我的HTML和JQuery代码。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="description" content="Contacts">
    <title>Contacts</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){

        $('button').click(function(){
            var first = $('input.first').val();
            var last = $('input.last').val();
            var desc = $('textarea').val();

            $('div.right').append("<p class='card'><h1>"+ first +' '+last+"</h1><h4>'Click for description!'</h4></p><p class='back'>"+desc+"</p>");

            return false;
        });

        $(document).on('click', 'p.card', function(){ //this is the function I am trying to get to work.
            alert("test");
        });
    });
    </script>
</head>
<body>
    <div class="wrapper">
        <div class="left">
            <form action="#">
                <p >First name: <input type="text" name="fname" class="first"></p>
                <p >Last name: <input type="text" name="lname" class="last"></p>
                <p class="desc">Description:</p>
                <p><textarea rows="4" cols="50"></textarea></p>
                <button>Add User</button>
            </form>
        </div>
        <div class="right">
        </div>
    </div>
</body>

这是我的CSS代码
*{
/*  outline: 2px dotted red;*/
    border: 0 none;
    padding: 0;
    margin: 0;
}

div.wrapper{
    width: 970px;
    min-height: 100px;
    margin-left: auto;
    margin-right: auto;
}

div.left{
    border: 2px solid black;
    width: 500px;
    display: inline-block;
}

div.right{

    width: 200px;
    display: inline-block;
    height: 100px;
    vertical-align: top;
    padding-right: 100px;
    text-align: center;
}


p{
    margin-left: 80px;
    margin-top: 20px;
    font-size: 20px;
    width: 400px;
}

p.email{
    margin-left: 45px;
}

button{
    margin: 30px;
    height: 20px;
    width: 100px;
    margin-left: 75px;
    text-align: center;
}

div.card{
    margin-left: 100px;
    margin-bottom: 20px;
    border: 2px solid black;
    width: 300px;
    height: 100px;
    text-align: center;
}

p.back{
    display: none;
    margin: 0px;
    padding: 0px;
    text-align: center;
}

textarea{
    border: 2px solid black;
}

最佳答案

某种程度上,您要附加的p.class损坏了,它在其他元素的下面,并且未被jQuery事件标识为发件人。

以下工作正常:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!DOCTYPE HTML>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="description" content="Contacts">
        <title>Contacts</title>
        <link rel="stylesheet" type="text/css" href="style.css">
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){

            $('button').click(function(){
                var first = $('input.first').val();
                var last = $('input.last').val();
                var desc = $('textarea').val();
                var p = $('<p class="card">');
                p.append("<h1>"+ first +' '+last+"</h1><h4>'Click for description!'</h4><p class='back'>"+desc+"</p>");
                $('div.right').append(p);
                return false;
            });

            $(document).on('click', 'p.card', function(){ //this is the function I am trying to get to work.
                alert("test");

            });
        });
        </script>
    </head>
<body>
    <div class="wrapper">
        <div class="left">
            <form action="#">
                <p >First name: <input type="text" name="fname" class="first"></p>
                <p >Last name: <input type="text" name="lname" class="last"></p>
                <p class="desc">Description:</p>
                <p><textarea rows="4" cols="50"></textarea></p>
                <button>Add User</button>
            </form>
        </div>
        <div class="right">
        </div>
    </div>
</body>

10-04 15:14