$("#plate-1").mouseenter(function() {
$("#plate-1hover").addClass("plate-1after")
}).mouseout(function(){
$("#plate-1hover").removeClass("plate-1after")
});
$("#plate-2").mouseenter(function() {
$("#plate-2hover").addClass("plate-2after")
}).mouseout(function(){
$("#plate-2hover").removeClass("plate-2after")
});
$("#plate-3").mouseenter(function() {
$("#plate-3hover").addClass("plate-3after")
}).mouseout(function(){
$("#plate-3hover").removeClass("plate-3after")
});
$("#plate-4").mouseenter(function() {
$("#plate-4hover").addClass("plate-4after")
}).mouseout(function(){
$("#plate-4hover").removeClass("plate-4after")
});
$("#plate-5").mouseenter(function() {
$("#plate-5hover").addClass("plate-5after")
}).mouseout(function(){
$("#plate-5hover").removeClass("plate-5after")
});
$("#plate-6").mouseenter(function() {
$("#plate-6hover").addClass("plate-6after")
}).mouseout(function(){
$("#plate-6hover").removeClass("plate-6after")
});
$("#plate-7").mouseenter(function() {
$("#plate-7hover").addClass("plate-7after")
}).mouseout(function(){
$("#plate-7hover").removeClass("plate-7after")
});
如上面所示,小弟想将上面的JS代码封装成一个JS方法。但是没有思路,不知道该怎么下手,请大神们指点一下。能有范例最好。
注:这段JS代码是一段特效代码,效果是鼠标移入移出的动画效果。原理是移除dom上的class样式
dom呢,贴出来看看
提供思路:
封装程度浅(面向过程):
封装程度深(面向对象):
写了个DEMO http://runjs.cn/code/izmm52sc
$("selector[id|='plate']").mouseenter(function(){
selector是你标签名,我不知你的标签
不封装也是可以解决的。。
鉴于楼主欠缺编程经验,我就先不说封装成jQuery插件等高大上的做法了。单就论封装成方法而言。
方法,也就是函数。是面向过程式语言一种代码复用的初级手段,简而言之,就是把重复的部分用函数封装起来。
例如猫叫多遍,
cat.meow()
, 你总不可能写对应次数的代码,一般会写成:这就是一种最基础的代码复用。
当然,面向对象的语言也许有更简单的
cat.meow(1000)
那么,针对楼主的情况。逐步讲一下各层次的方法。最简单的用函数封装一下就是:
然后调用
鉴于楼主的DOM的ID和Class命名比较有规律,可以写成这样
然后调用
但是这样还是不够通用,楼主应该看看事件方面有关事件委托的知识
事件委托
事件委托要结合具体的DOM结构来看。假设有这样的一个结构:
这样,调用时就只需要调用一次。
当然,这里假设是每组控件的效果都相似,如果不同,有两种解决方案:1.利用box父级class从样式层面解决。2.js层面多加一个配置项参数
按你的思路可以这样写:
思路是循环所有要绑定事件的元素,为他们添加相应的事件。注意这里使用了在每次循环中使用了闭包以确保i的指向正确。
但是不建议这样做,因为如果plate元素比较多的话将会绑定很多事件。
建议通过事件代理的方式:
这种方式只需要绑定两个事件处理函数。
触发时判断鼠标是否移入了目标块(因为不知道你的dom结构,所以这里没有详细写。建议为他们加上统一的class方便判断)。当然此处事件应该绑定到plate元素的父元素上面而不是document,以减少不必要事件的触发
然后通过$(e.target)可以选取到触发的dom,然后加上相应的class。
这里要注意mouseenter和mouseover,mouseleave和mouseout的区别。参见:MDN Mouse Event部分
http://www.cnblogs.com/Wayou/...
建议把dom一起贴出来