似乎在 IE 中,某些委托可能会以某种方式导致另一个委托无法工作。
这是一种可能的情况:
<html>
<head>
<script src='jquery-1.4.2.min.js'></script>
<script>
$(function() {
$('#main')
.delegate('div', 'click', function() {
alert('on div!');
})
.delegate('[name=first]', 'change', function() {
alert('first!');
})
.delegate('[name=second]', 'change', function() {
alert('second!');
})
;
});
</script>
</head>
<body>
<div id="main">
<input name="first" />
<input name="second" type="checkbox" />
<div>Test</div>
</div>
</body>
</html>
在这种特殊情况下,复选框的处理程序不会触发。
像往常一样,该问题不会出现在其他浏览器中。
更改调用顺序可能会解决一个问题,但有引发另一个问题的风险。请注意,委托处理互斥元素,因此顺序应该无关紧要。
这是什么原因造成的?