公文包Jquery脚本崩溃页面
portfolio Jquery script crashing page
我正在尝试创建这个有2列图像的公文包页面。悬停时,图像会缩放,下一个图像会被推开以显示标题。
我是javascript的新手,我已经让它工作了,但运行几分钟后它就崩溃了。我确信这不是用最好的方式写的。有人有反馈吗?
function portImage() {
$('.slide').mouseenter(
function() {
var imgResize = $(this).children('.slide-image').children('img');
var current_h = $(this).children('.slide-image').children('img').height();
var current_w = $(this).children('.slide-image').children('img').width();
$(imgResize).addClass('active');
$(imgResize).clone().insertAfter($(imgResize)).addClass('clone');
$(this).find('.active').removeClass('active');
$(this).find('.clone').filter(':not(:animated)').animate({
width: (current_w * 1.3),
height: (current_h * 1.3)
}, {queue: false, duration: 300});
}).mouseleave(
function() {
var imgResize = $(this).children('.slide-image').children('img');
var current_h = $(this).children('.slide-image').children('img').height();
var current_w = $(this).children('.slide-image').children('img').width();
$(this).find('.clone').filter(':not(:animated)').animate({
width: (current_w + 'px'),
height: (current_h + 'px')
}, {queue: false, duration: 300});
});
};
function leftSlide() {
$('.slide.left').hover(
function(){
$(this).next('.slide.right').animate({
right: "-25%"
}, 500);
$(this).children('.slide-caption').animate({
right: "-50%"
}, 500);
},
function(){
$(this).next('.slide.right').animate({
right: "0"
}, 500);
$(this).children('.slide-caption').animate({
right: "0"
}, 500);
});
};
function rightSlide() {
$('.slide.right').hover(
function(){
$(this).prev('.slide.left').animate({
left: "-25%"
}, 500);
$(this).children('.slide-caption').animate({
left: "-50%"
}, 500);
},
function(){
$(this).prev('.slide.left').animate({
left: "0"
}, 500);
$(this).children('.slide-caption').animate({
left: "0"
}, 500);
});
};
portImage();
rightSlide();
leftSlide();
我在jsfiddle上设置了它:https://jsfiddle.net/cuestadesign/jej9xrfq/
这是portImage()
函数的mouseenter
事件处理程序中.clone()
函数的结果。
您正在将var imgResize
设置为$(this).children('.slide-image')
的所有子级img
es。第一次只捕捉到一张图片。但是,您可以克隆该映像,并将其作为同级映像添加到该映像中。下一次,您的功能将把两个图像都分配给var imgResize
,并将它们都克隆/动画化,等等
这导致被克隆和动画化的图像呈指数级增长,导致仅几次迭代后页面崩溃。
解决方案?据我所知,只要在克隆上下动画化后删除它就可以解决所有问题:
$(this).remove();
这将进入portImage()
函数的mouseleave
事件处理程序中.animate()
函数的回调函数,如下所示:
$(this).find('.clone').filter(':not(:animated)').animate({
width: (current_w + 'px'),
height: (current_h + 'px')
}, {queue: false, duration: 300, complete: function() {
$(this).remove();
}
});
您可能还想更改imgResize
的分配,使其不包括类别为.clone
:的项目
var imgResize = $(this).children('.slide-image').children('img:not(.clone)');
JSFiddle此处
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- nodejs-如何修复服务器脚本以避免崩溃
- 公文包Jquery脚本崩溃页面
- 运行IOS自动化脚本时需要查找崩溃
- 我的脚本使浏览器崩溃
- setInterval 在运行用户脚本时使我的浏览器崩溃
- D3中的脚本.js使Chrome崩溃
- 简单Greasemonkey脚本崩溃浏览器
- AJAX-每当调用AJAX脚本时,Javascript就会崩溃
- Illustrator-在文本路径脚本中批量插入文件名会导致Illustrator崩溃
- 加载错误的页面时,iMacro脚本崩溃
- 全局变量导致脚本崩溃
- 脚本变得无响应崩溃firefox
- jquery .change功能使脚本在IE中崩溃
- XMLHttpRequest点击太多-脚本崩溃(JavaScript)
- 拖,CSS改变后,Drop脚本开始崩溃
- 脚本性能-脚本使浏览器崩溃
- JS脚本在缩小后崩溃