Jquery支持静态HTML,但不支持动态HTML

jquery is working on static html but not on dynamic html

本文关键字:HTML 不支持 动态 静态 Jquery 支持      更新时间:2023-09-26

少数div元素是使用ajax生成的,少数是静态的。jquery只能处理静态元素,不能处理动态生成的html。我正在运行一个jquery点击"app"类的任何元素。但是jquery只能处理静态html而不能处理动态html

<!Doctype html>
<html>
<head>
<title>applications</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script src="//code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
$(document).ready(function(){
$.ajax({
        type:'GET', 
        url:'application/show_app.php',
        data:{show_app:"1"}, 
        success: function(data){
            if(data)
            {
                var split= data.split('%%%%');
                for(var i=0;i<split.length-1;i++)
                {
                    var div= document.createElement("div");
                    var div_child=document.getElementById("app_row").appendChild(div);
                    div_child.className="app";
                    div_child.innerHTML="dynamic";    //dynamically generated                   
                 }
             }
        }, 
        failure: function(){
            alert(failed);
        }
    }) ;
$(".app").click(function(){
    alert("jquery"); //jquery which will run on clicking the division
});



});
</script>


</head>
<body id="default" class="full">           //basic html
    <div class="header">
        <h1>
        <a title="urban airship">urbanairship</a>
        </h1>
    </div>
    <div class="main" name="application-main">
        <div class="sub-header">
            <h2>Your Applications</h2>
            <div class="sub-header-actions">
                <a href="application/add_app.php/">
                    <span class="sprite plus-ico"></span>
                    New App
                </a>
            </div>
        </div>
        <div class="row main-app-list" id="app_row">
    <div class="app">static</div> //static html

        </div>
    </div>

</body>
</html>

尝试:

$(document).on('click', '.app' , function(){
    alert("jquery"); //jquery which will run on clicking the division
});

之所以有效,是因为事件侦听器现在附加到文档而不是单个元素。这允许通过AJAX加载的元素仍然触发事件。您还应该查看on的作用域,例如$("#myWrapper").on(...),因为这对性能更好。

参见文档:JQuery On