gpt4 book ai didi

jquery - jQuery 类悖论

转载 作者:行者123 更新时间:2023-12-01 07:24:31 26 4
gpt4 key购买 nike

我无法理解这个。

当我想从 div删除B添加D进入其中,

它有效。

但是D类的函数无法被触发。

$('.B').click(function() { 
$('.A').animate({
"left": "+=10%"
},{
duration:1000,
complete: function(){
$("#C").addClass("D").removeClass("B");
}
});
});



$(".D").click(function() {
$(".A").animate({
"top":"+=40%"
},{
duration:2000,
complete:function(){
$("#C").addClass("B").removeClass("D");
}
});
}); ​
<小时/>

我尝试将类 D 的函数放入类 B 的函数中,如下所示:

$('.B').click(function() { 
$('.A').animate({
"left": "+=10%"
},{
duration:1000,
complete: function(){
$("#C").addClass("D").removeClass("B");
$(".D").click(function() {
$(".A").animate({
"top":"+=40%"
},{
duration:2000,
complete:function(){
$("#C").addClass("B").removeClass("D");
}
});
}); ​
}
});
});

这两个函数第一次都可以工作,之后它们的行为就会变得奇怪。

如果有人能向我解释原因并为我提供解决方案,我将不胜感激。

最佳答案

当您使用$.click时,您仅绑定(bind)到与当时选择的元素相匹配的元素。如果您还想匹配所有 future 元素,请使用 $.on 代替:

$("body").on("click", ".D", function(){
/* Class D Stuff */
});

无论被点击的元素是否具有 class="D" 开头,还是稍后通过 $(this).addClass("D"等方式获取它,这都会使用react)

理想情况下,“body” 部分应该是距离您单击的元素更近的容器。例如,如果您有以下内容:

<body>
<div id="container">
<a href="#" class="B">Foo</a>
<a href="#" class="D">Bar</a>
</div>
</body>

您应该在 jQuery 函数中使用 #container 而不是 body

关于jquery - jQuery 类悖论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459794/

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