2

所以我对 javascript/jquery 很陌生,所以我需要一些帮助。这就是问题所在。我有一个页面,其中一个按钮触发一个 jquery 动画以显示一个登录表单。(它只是替换了之前的 html)在登录表单上,我让它动态创建一个按钮来隐藏登录表单,并且显示原始 html。但是那个按钮不能被.click方法调用,甚至OnClick属性也不起作用!有什么建议吗?

$(document).ready(function() {
$("#login_button").click(function() {
$("#menu").animate({height: "toggle"}, 500, function() {
$("#menu").empty();
$("#menu").append('<button id="back_button"></button>');
$("#menu").animate({height: "toggle"}, {duration: 500, queue: false});
});
});
});

然后监听“back_button”点击的代码:

$(document).ready(function() {
$("#back_button").click(function() {
$("#menu").animate({height: "toggle"}, 500, function() {
$("#menu").append(//Regular HTML);
$("#menu").animate({height: "toggle"}, {duration: 500, queue: false});
});
});
});

不能在生成我的另一个 javascript 的元素上执行 javascript 吗?任何想法都会很棒!提前致谢!

4

4 回答 4

11

从以下位置更改您的背部按钮的代码:

$("#back_button").click(function() {

$(document).on('click', "#back_button", function() {

动态创建元素时,需要用到jQuery的.on()函数。

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。

于 2013-05-10T20:54:59.913 回答
0

您尝试在加载时添加点击处理程序,但<button>尚未创建。在创建按钮后,在创建按钮的相同代码中添加点击函数。

于 2013-05-10T20:54:47.507 回答
0

您需要事件委托

$(document).on('click', '#back_button', function() {
  // do your stuff here
});

http://api.jquery.com/on/

于 2013-05-10T20:55:43.083 回答
0

发生这种情况是因为执行后退按钮的 javascript 时,实际元素不存在。

相反,用于.on绑定点击事件。

$(document).on("click", "#back_button", function() {});
于 2013-05-10T20:55:45.887 回答