使用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>
答案 0 :(得分:3)
尝试:
$(document).on('click', '.app' , function(){
alert("jquery"); //jquery which will run on clicking the division
});
这是有效的,因为您的事件侦听器现在已附加到文档而不是单个元素。这允许通过AJAX加载的元素仍然触发事件。您还应该考虑对$("#myWrapper").on(...)
进行范围界定,因为这样做会更好。
请参阅文档:JQuery On