我已经查看了stackoverflow几天,而且我没有工作过。无论如何,在爆炸并向我的文档附加提交按钮后,按钮在单击时不会发出警报。
$(document).ready(function() {
alert('hi');
$("#a").click(function() {
$(".main, .topbar, button").toggle("explode");
$('body').delay(8100).append("<img src='picture.png'> <form > <input type='text'></form><button id='submit'>submit</button>");
});
$("#submit").click(function() {
alert('hi');
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='a'>button</button>
&#13;
有什么建议吗?
答案 0 :(得分:6)
在将提交添加到htmlDOM之前,您将click
绑定到提交。要这样做,你必须先将提交添加到htmlDOM,然后然后绑定事件处理程序。
但是,对于这样的动态元素,您可以使用来自任何父元素的jQuery on
函数和delegate。建议不要从body
委派,您可以从document.ready
活动期间出现的最近的父级进行委派。
$(document).ready(function() {
alert('hi');
$("#a").click(function() {
$(".main, .topbar, button").toggle("explode");
$('body').delay(8100).append("<img src='picture.png'> <form > <input type='text'></form><button id='submit'>submit</button>");
});
$("body").on('click','#submit',function() {
alert('hi');
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='a'>button</button>
&#13;
答案 1 :(得分:0)
我不是100%,如果我理解你在那里做的事情,但检查一下是否有效:
<script>
$(document).ready(function () {
alert('hi')
$("#a").click(function () {
$(".main, .topbar, button").toggle("explode");
$('body').delay(8100).append("<img src='img.png'> <form > <input type='text'><button id='submit'>submit</button></form>");
});
$("#submit").click(function () {
alert('hi');
});
});
</script>
答案 2 :(得分:0)
我假设您在页面加载后插入按钮,但在元素位于页面之前调用单击处理程序。因此jQuery无法找到你的元素。
如果你想在页面加载时分配你的点击处理程序,那很好。只需将您的点击处理程序分配给页面加载时页面上的任何父元素,例如<body>
,然后使用jQuery .on()方法指定后代选择器,如下所示:
$('body').on('click', '#submit', function(){ alert('hi'); });