页面上有一个值为" button1"的按钮。按下时,它必须删除自己并添加值为" button2"的新按钮。当" button2"按下,它必须删除自己并添加" button1"背部。有点无限循环。
我知道只需更改按钮的值或至少使用" detach()"功能,但这是我在网站上遇到问题的最简单的情况,我目前正在尝试实现这一点,我必须通过按钮交换两个" div"的数据。
所以,回到问题,事情是" button1"工作得很好," button2"什么也没做。一点帮助将不胜感激。
的index.html
<!DOCTYPE html>
<html>
<head>
<script src = "http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src = "script.js" type = "text/javascript"></script>
</head>
<body>
<div id = "div1">
<input type = button id = "button1" value = "button1" />
</div>
</body>
</html>
的script.js
$(document).ready (function() {
$("#button1").click (function() {
$("body").append ("<div id = 'div2'></div>");
$("#div2").append ("<input type = button id = 'button2' value = 'button2' />");
$("#div1").remove();
});
$("#button2").click (function() {
$("body").append ("<div id = 'div1'></div>");
$("#div1").append ("<input type = button id = 'button1' value = 'button1' />");
$("#div2").remove();
});
});
答案 0 :(得分:2)
#button2
未响应点击,因为在绑定click()
事件时它不存在。
您可以通过与.on()
$(document).on('click', '#button1', function() {
....
});
$(document).on('click', '#button2', function() {
....
});
答案 1 :(得分:1)
更改为使用.on
,因为要动态添加元素:
$(document).on("click", "#button1", function() {
$("body").append ("<div id = 'div2'></div>");
$("#div2").append ("<input type = button id = 'button2' value = 'button2' />");
$("#div1").remove();
});
$(document).on("click", "#button2", function() {
$("body").append ("<div id = 'div1'></div>");
$("#div1").append ("<input type = button id = 'button1' value = 'button1' />");
$("#div2").remove();
});
答案 2 :(得分:1)
您正尝试将点击处理程序附加到最初不存在的元素,并且它不会附加到动态创建的元素。
尝试使用on() jQuery函数,或者在早期的jQuery版本中使用live()函数,如下所示:
$(document).on("click", "#button1", function() {
(...)
});
$(document).on("click", "#button2", function() {
(...)
});
答案 3 :(得分:1)
您需要使用.on
jQuery函数。由于您是通过JavaScript创建div的,因此它不在DOM中。
与此处相同:https://stackoverflow.com/a/1207393/1165441
不推荐使用 .live
,因此您可以忽略,除非您使用的是旧版本的jQuery。
答案 4 :(得分:1)
操作DOM时,附加到按钮的事件处理程序不会再次附加。页面加载后你遇到了类似的问题 - button2不存在且没有click事件。
如果在DOM操作后重新生成事件,它将起作用:
function set_events() {
$("#button1").click (function() {
$("body").append ("<div id = 'div2'></div>");
$("#div2").append ("<input type = button id = 'button2' value = 'button2' />");
$("#div1").remove();
set_events();
});
$("#button2").click (function() {
$("body").append ("<div id = 'div1'></div>");
$("#div1").append ("<input type = button id = 'button1' value = 'button1' />");
$("#div2").remove();
set_events();
});
}
$(document).ready (function() {
set_events();
});