<div class="container"> </div>
<script type="text/javascript" th:inline="javascript">
$('<button>点击我</button>').click(function() {
alert('按钮被点击了!'); // 这不会工作,因为按钮在绑定时还未添加到DOM中
});
$('#container').append($('<button>点击我</button>')); // 这里的按钮是新的,之前绑定的事件不会应用到它上
</script>
上边的代码 点击button没有反应。
因为你尝试在元素实际添加到 DOM 之前绑定了事件。jQuery 的 .on()
方法(或其简写形式 .click()
)通常不会直接绑定到尚未添加到 DOM 的元素上。
为了解决这个问题,你可以使用事件委托(Event Delegation)来绑定事件。这意味着你将事件处理程序绑定到一个父元素(或更高层级的元素)上,然后指定只有当事件发生在特定子元素(如你的 <button>
)上时,才执行该处理程序。
调整后代码
$(document).ready(function() {
// 假设你的按钮将被添加到某个ID为'container'的元素内
$('#container').on('click', 'button', function() {
// 这里是按钮的点击事件处理函数
alert('按钮被点击了!');
});
// 然后,在某个时候,你动态地添加了一个按钮
$('#container').append('<button>点击我</button>');
)}
注:id="container" 是在html里静态的 不是动态生成的 ;
'button' 是container里的button按钮 也可以换成 Id或者class。