Javascript jQuery事件未触发
我有3个文件:Javascript jQuery事件未触发,javascript,jquery,json,hyperlink,Javascript,Jquery,Json,Hyperlink,我有3个文件: js_json.js->用于我的json代码 javascript.js->用于我的javascript 作用 index.php 下面是js_json.js的代码: $(function(){ $('#postTitle').change(function(){ var title_id = $("#postTitle").val(); $.ajax({ type:"post",
- js_json.js->用于我的json代码
- javascript.js->用于我的javascript 作用
- index.php
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;
});
});
这里是index.php
代码:
$(function (){
$("a[name=pesan]").click(function (){
alert("holalalalalal.....!");
});
});
//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>
//一些代码
帖子:
选择发布。。。
click()
将仅为调用click
时页面中存在的元素绑定事件(不带选择器的on()
,bind()
,以及用于绑定的快捷方式组中的所有其他方法也是如此;keydown()
,change()
等)
因为您的另一个元素是在一段时间后通过AJAX添加的,所以处理程序不受它的约束
改为与选择器一起使用,它将事件绑定到选择器匹配的所有当前和未来元素
$(function (){
$(document).on('click', 'a[name=pesan]', function () {
alert("holalalalalal.....!");
});
});
由于jQuery1.7中引入了on()
,如果您使用的是jQuery的早期版本(就像这个问题提出时存在的版本),那么可以使用或代替on
$(function (){
$('a[name=pesan]').live('click', function () {
alert("holalalalalal.....!");
});
});
我想提一提(因为我在网上搜索的任何“事件不开火”案例中都没有提到这一点)有可能会咬到你
如果您碰巧使用从DOM中临时提取某些内容,然后重新插入,那么您将丢失事件。您需要使用的是在重新插入后保留数据和事件。这可能很难调试,因为一切看起来都很正常,而事件调试工具充其量只是粗略的
(就我个人而言,我更喜欢将它们称为.detacheandScrubDataandEvents()和.detache(),因为我喜欢描述性名称,这样可以节省调试时间。对于那些找到的人,请删除()和.detache()在语义上和意义上都是有区别的名字……愿和平与你同在……但你大错特错。)谢谢,这很有效。。。谢谢你的解释。。。这就是我想要的…谢谢你!我以前一直使用“on”直接指向元素,比如:$(“p”).on('click',function(){});有什么解释吗?我注意到Chrome抛出了这个警告:主线程上的同步XMLHttpRequest被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请检查。使用回答中的.live()
,但请记住,在页面中多次使用同一id是无效的(id是唯一的),并且将来很可能会导致其他问题。@gaby感谢您的建议。。。