jquery正在处理静态html但不处理动态html

时间:2014-06-16 07:37:31

标签: javascript php jquery html

使用ajax生成的div元素很少,而且很少是静态的。 jquery只对静态元素起作用,而不是动态生成的html。我在点击“app”类的任何元素时运行jquery。但是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>

1 个答案:

答案 0 :(得分:3)

尝试:

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

这是有效的,因为您的事件侦听器现在已附加到文档而不是单个元素。这允许通过AJAX加载的元素仍然触发事件。您还应该考虑对$("#myWrapper").on(...)进行范围界定,因为这样做会更好。

请参阅文档:JQuery On