Sin*_*u13 7 javascript jquery json hyperlink
我有3个文件:
这里的代码为js_json.js
:
$(function(){
$('#postTitle').change(function(){
var title_id = $("#postTitle").val();
$.ajax({
type:"post",
url:"proses.php",
data:"title_id=" + title_id,
dataType:"json",
success:function(data){
body="";
//$.each(data, function(i,n){
//body = n['body'];
//});
body += "<a href=\"javascript:void(0);\" id=\"pesan\" name="pesan" onClick=\"\">Hola Test</a>";
$(".postBody").empty();
$(".postBody").append(body);
},
error:function(data){
$(".postBody").empty();
$(".postBody").append("NO Post Selected.");
}
});
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
在这里我的javascript.js
代码:
$(function (){
$("a[name=pesan]").click(function (){
alert("holalalalalal.....!");
});
});
Run Code Online (Sandbox Code Playgroud)
这里的index.php
代码:
//some code
<body>
<a href="javascript:void(0);" id="pesan" name="pesan">Hola Test 1</a>
Posts : <br />
<select name="title" id="postTitle">
<option value="">Select Post...</option>
<?php
$sql = "SELECT id, title FROM posts ORDER BY title";
$query = mysql_query($sql) or die(mysql_error());
while($rows = mysql_fetch_array($query)){
print('<option value="' . $rows['id'] . '">' . $rows['title'] . '</option>');
}
?>
</select>
<br />
Body : <br />
<div class="postBody">
Will show the body of post.
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的问题是:
当我点击"Hola Test 1"链接时,它会起作用并显示消息.问题是,在我单击选择选项后,出现链接"Hola Test",然后我点击那个("Hola Test")链接,消息没有出现,并且firebug中没有错误...
有人可以向我解释为什么......?谢谢...
Mat*_*att 19
click()
将仅结合于存在于当时的页面元素事件click
被调用(这同样适用on()
,而不选择器,bind()
和快捷组用于结合在所有其他方法; keydown()
,change()
等).
因为稍后通过AJAX添加了其他元素,所以处理程序不受其约束.
.on()
与选择器一起使用,它将事件绑定到选择器匹配的所有当前和未来元素.
$(function (){
$(document).on('click', 'a[name=pesan]', function () {
alert("holalalalalal.....!");
});
});
Run Code Online (Sandbox Code Playgroud)
自从on()
jQuery 1.7中引入以来,如果你使用的是早期版本的jQuery(就像问这个问题时那样),你可以使用live()
或delegate()
代替on;
$(function (){
$('a[name=pesan]').live('click', function () {
alert("holalalalalal.....!");
});
});
Run Code Online (Sandbox Code Playgroud)