この関数またはmousemoveイベントを破棄できますか?
jQueryには、頭痛の種となるコードがいくつかあります。私はこのコードをオンラインで見つけ、要素を渡すときにマウスムーブ効果を提供しましたが、彼を離れるときにイベントを補足または削除する方法を知りたいと思いました。
私が持っている例は次のとおりです。
$("#icons").mouseenter(function(e) {
$(this).find('div').slidemouse();
});
$("#icons").mouseleave(function(e) {
$(this).find('div').slidemouse('destroy');
});
コードプラグイン:
(function($) {
$.fn.slidemouse=function(options) {
var defaults=
{
height:'240px',
widthExpand:true,
mirror:false,
mirrorOpacity:.3
};
var opts=$.extend(defaults,options);
var expands=1;
var galleryWidth=0;
var self=this;
self.css('overflow','hidden');
self.children().css('height',opts.height);
self.children().children().each(function(index) {
galleryWidth=galleryWidth+$(this).outerWidth(true)
}
);
if(opts.widthExpand) {
while(galleryWidth<self.width()) {
self.children().children(":nth-child("+expands+")").clone().appendTo(self.children());
galleryWidth=galleryWidth+self.children().children(":nth-child("+expands+")").outerWidth(true);
expands++
}
}
self.children().css("width",galleryWidth);
if(opts.mirror) {
self.clone().insertAfter(self).attr("id","");
self.next().fadeTo(0,opts.mirrorOpacity)
}
if(opts.widthExpand||opts.mirror) {
$(window).bind("resize",resizeWindow)
}
function resizeWindow() {
if(opts.widthExpand) {
galleryWidth=0;
self.children().children().each(function(index) {
galleryWidth=galleryWidth+$(this).outerWidth(true)
});
while(galleryWidth<self.width()) {
self.children().children(":nth-child("+expands+")").clone().appendTo(self.children());
galleryWidth=galleryWidth+self.children().children(":nth-child("+expands+")").outerWidth(true);
expands++
}
self.children().css("width",galleryWidth);
if(opts.mirror) {
self.next().remove();
self.clone().insertAfter(self).attr("id","");
self.next().fadeTo(0,opts.mirrorOpacity)
}
}
}
$(this).parent().mousemove(function(e) {
var x=e.pageX-this.offsetLeft;
var calc=(self.children().width()-self.width())/self.width();
var left=x*calc;
var right=(self.width()-x)*calc;
self.stop().animate({scrollLeft: left}, 500);
if(opts.mirror) {
self.next().stop().animate({scrollLeft: right}, 500);
}
})
}
}
)(jQuery);