奇怪的Javascript行为
我的页面上有以下代码,在页面重新加载后,它可以正常工作,但如果不重新加载,这个脚本将无法按预期工作 第一次使用:效果非常好奇怪的Javascript行为,javascript,jquery,web,Javascript,Jquery,Web,我的页面上有以下代码,在页面重新加载后,它可以正常工作,但如果不重新加载,这个脚本将无法按预期工作 第一次使用:效果非常好 第二次使用:为什么它要跳过一节课? 第三个用途:它可以跳过2节课 如何在页面外重新加载的情况下刷新脚本,或者我需要做什么 $(document).ready(function(){ $('.partImg').each(function(){ $(this).click(function(){ $("#hideMod, #vi
第二次使用:为什么它要跳过一节课?
第三个用途:它可以跳过2节课 如何在页面外重新加载的情况下刷新脚本,或者我需要做什么
$(document).ready(function(){
$('.partImg').each(function(){
$(this).click(function(){
$("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeIn(400);
$(this).next().addClass("ASert");
var AV = $(".ASert").text();
$('#visMod').html("<img src='" + AV + "'/>");
$("#nextP").click(function(){
if ($('.hidePart:last').hasClass("ASert") ) {
$('.hidePart:first').addClass("ASert");
$('.ASert').last().removeClass("ASert");
} else {
$('.ASert').next().next().addClass("ASert");
$('.ASert').first().removeClass("ASert");
}
var AV = $(".ASert").text();
$('#visMod').html("<img src='" + AV + "'/>");
});
$("#prevP").click(function(){
if ($('.hidePart:first').hasClass("ASert") ) {
$('.hidePart:last').addClass("ASert");
$('.ASert').first().removeClass("ASert");
} else {
$('.ASert').prev().prev().addClass("ASert");
$('.ASert').last().removeClass("ASert");
}
var AV = $(".ASert").text();
$('#visMod').html("<img src='" + AV + "'/>");
});
$("#closeP").click(function(){
$("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeOut(200);
$(".ASert").removeClass("ASert");
});
});
});
});
$(文档).ready(函数(){
$('.partImg')。每个(函数(){
$(此)。单击(函数(){
$(“#hideMod,#visMod,#nextP,#closeP,#prevP”)。fadeIn(400);
$(this.next().addClass(“ASert”);
var AV=$(“.ASert”).text();
$('#visMod').html(“”);
$(“#nextP”)。单击(函数(){
if($('.hidePart:last').hasClass(“ASert”)){
$('.hidePart:first').addClass(“ASert”);
$('.ASert').last().removeClass(“ASert”);
}否则{
$('.ASert').next().next().addClass(“ASert”);
$('.ASert').first().removeClass(“ASert”);
}
var AV=$(“.ASert”).text();
$('#visMod').html(“”);
});
$(“#prevP”)。单击(函数(){
if($('.hidePart:first').hasClass(“ASert”)){
$('.hidePart:last').addClass(“ASert”);
$('.ASert').first().removeClass(“ASert”);
}否则{
$('.ASert').prev().prev().addClass(“ASert”);
$('.ASert').last().removeClass(“ASert”);
}
var AV=$(“.ASert”).text();
$('#visMod').html(“”);
});
$(“#关闭”)。单击(函数(){
美元(“#hideMod,#visMod,#nextP,#closeP,#prevP”)。淡出(200);
$(.ASert”).removeClass(“ASert”);
});
});
});
});
在这里你可以看到问题的观点
这是javascript中非常常见的问题。在单击处理程序内部,您正在绑定另一个单击处理程序。如果有必要,应在某个位置执行解绑 然而,这似乎没有必要。因此,我建议以这种方式重构代码:
$(function(){
$("#nextP").on("click", function(){
//...
});
$("#prevP").on("click", function(){
//...
});
$("#closeP").on("click", function(){
//...
});
$('.partImg').on( "click", function(){
$("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeIn(400);
//...
});
});
希望这有帮助。你的问题很难理解。1) 没有任何缩进尝试的大墙o'文本,因此可读2)几乎没有/没有实际问题的描述3)没有关于如何重现问题的信息。您应该尝试缩进代码,以便其他人可以阅读。您可以尝试将所有的.click(function(){…})替换为.on('click',function(){…})。我认为您必须包含html,以便任何人都能理解您试图执行的操作。我已尝试正确缩进您的代码,但我怀疑你能否得到任何合理的答案,因为问题含糊不清,而且缺乏解决问题所需的信息。正如@Ringo所提到的,我猜问题在于
点击方法。你的点击并没有解除绑定,我最近刚刚替换了。点击(function(){…})为.on('click',function(){…}),但它对我不起作用。非常感谢,现在它可以工作了。