gpt4 book ai didi

internet-explorer-8 - jQuery 的委托(delegate)与 IE 中的另一个委托(delegate)冲突

转载 作者:行者123 更新时间:2023-12-02 05:13:10 25 4
gpt4 key购买 nike

似乎在 IE 中,某些委托(delegate)可能会以某种方式导致另一个委托(delegate)无法工作。

这是一种可能的情况:

<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>

在这种特殊情况下,不会触发复选框的处理程序。

像往常一样,问题不会出现在其他浏览器中。

更改调用顺序可能会解决一个问题,但有可能导致另一个问题。请注意,委托(delegate)处理互斥元素,因此顺序应该无关紧要。

这是什么原因造成的?

最佳答案

我无法提供解释;但我在 IE8 中遇到过类似的行为。奇怪的是,在我的例子中,如果我重新排列绑定(bind),以便我的一个复选框上的委托(delegate)绑定(bind)出现在其他表单元素上的委托(delegate)绑定(bind)之前,那么一切都运行良好。复选框处理程序之前的链接上的委托(delegate)点击处理程序似乎不会导致问题。

在我的例子中,我在复选框上有一个点击处理程序,在选择框上有两个更改处理程序,在单选按钮上有两个点击处理程序,在另一类复选框上有另一个点击处理程序,在链接上有几个点击处理程序。

有很多变量需要考虑,这里很难解释所有变量。例如,给我带来问题的复选框的委托(delegate)选择器是一个 id 选择器,而无害的复选框的选择器是一个类。

关于internet-explorer-8 - jQuery 的委托(delegate)与 IE 中的另一个委托(delegate)冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3633065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com