http://pastebin.com/1MGTtzij这是我的完整html文档,下面是简短版本:
$(document).ready(function () {
$("#myDiv").append($("<input />", {
type : "button",
id : "myButton1",
value : "Click me first!"
}));
$("#myButton1").live("click", function () {
var a = 1;
$("#myButton2").click(function () {
alert(a);
});
});
});
使用HTML代码:
<div id="myDiv"></div>
<input type="button" id="myButton2" value="Click me!" />
页面停止加载并完全显示后,您将看到2个按钮先点击我!和点击我!,请在我之后执行:
谢谢你们所有人!
答案 0 :(得分:2)
每次在按钮1上调用单击处理程序时,您都会在按钮2上添加一个新的单击处理程序。这就是它增加的原因。
$("#myButton1").live("click", function () {
var a = 1;
// Don't add a new handler here. Move this outside of the `live` call
$("#myButton2").click(function () {
alert(a);
});
});
我已将variable
移动到两个按钮的点击处理程序,并将点击处理程序设置移到外面。查看有效的example。
答案 1 :(得分:0)
每次单击myButton1时,都会向myButton2添加一个新的.click处理程序。
如果您真的想这样做,可以在$("#myButton2").unbind('click');
来电之前执行:$("#myButton2").click
。
答案 2 :(得分:-1)
这是因为每次click
按click me first!
按钮时,点击处理程序都会附加到Click me
按钮,并且会继续添加。移动代码以将click事件处理程序附加到外部。试试这个
$(document).ready(function () {
$("#myDiv").append($("<input />", {
type : "button",
id : "myButton1",
value : "Click me first!"
}));
$("#myButton1").live("click", function () {
var a = 1;
});
$("#myButton2").click(function () {
alert(a);
});
});