我正在尝试使用 jQuery 插件CheckTree来实现可选项目树。演示页面(上面的链接)引入了 jQuery 1.2.6 ...正如您所料,我的网站有一些更新的东西。
试验和错误已经确定该演示停止使用 jQuery 版本 1.5.2 或更高版本。有趣的是,发行说明说 jQuery 1.5.2 只是一个错误修复版本,并没有引入重大更改。我将问题归结为最简单的形式:
<!DOCTYPE html>
<html lang="en-gb">
<head>
<meta charset="utf-8">
<title>Breaking change in jQuery 1.5.2?</title>
</head>
<body>
<input type="checkbox">
<button>Click me</button>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"></script>
<script>
$(function(){
$(':checkbox').change(function(){ console.log('input checkbox change event'); });
$("button").click(function(){
console.log('button clicked');
$(":checkbox").click();
});
});
</script>
</body>
</html>
在 jQuery 1.5.1 中,单击按钮时不会触发复选框的更改事件。在 jQuery 1.5.2 中,触发了 change事件。
换句话说,当使用 jQuery 1.5.1 时,单击按钮会导致以下控制台输出:
button clicked
使用 jQuery 1.5.2 时,单击按钮时会记录以下内容:
button clicked
input checkbox change event
是否有任何文档来解释为什么会发生这种变化,以及我可以做些什么来解决它?该插件要求复选框更改事件不是由$(":checkbox").click()
.