我查看了论坛,似乎找不到解决我的问题的办法。
我有一个id数组,我用for循环迭代它们,添加鼠标事件以输入和离开。然而,所有事件都绑定到最终ID,这可能是每个问题的一个。
我把它放在下面的小提琴上,任何帮助都会很感激--我的大脑今天有点累了。
http://jsfiddle.net/shanemccster/e48vu/4/
cards = new Array('#box0','#box1','#box2');
function bindCardEvents(){
for (var i=0; i<cards.length; i++){
var targetID = '#'+$(cards[i]).attr('id');
$(targetID)
.mouseenter(function() {
TweenMax.to(targetID,0.3, {opacity:0.5} )
}).mouseleave(function() {
TweenMax.to(targetID,0.3, {opacity:1})
});
}
}
bindCardEvents();
谢谢
发布于 2014-04-01 09:25:32
您只需将ids与,
一起加入,按照惯例,它将选择器添加到jQuery中的集合中。这样做之后,您可以将事件分配给这些选择器返回的集合。每个事件都可以访问当前元素this
。TweenMax.to
需要一个选择器或一个元素,因此您可以将this
传递到函数中,而无需手动构造id选择器。
var cards = new Array('#box0','#box1','#box2');
var cardSelector = cards.join(",");
function bindCardEvents(){
$(cardSelector).mouseenter(function() {
TweenMax.to(this,0.3, {opacity:0.5} )
}).mouseleave(function() {
TweenMax.to(this,0.3, {opacity:1})
});
}
bindCardEvents();
为了简洁起见,这也是可行的。
$(cards.join(",")).mouseenter(function() {
TweenMax.to(this,0.3, {opacity:0.5} )
}).mouseleave(function() {
TweenMax.to(this,0.3, {opacity:1})
});
发布于 2014-04-01 09:15:23
你不需要迭代。你可以用
$("[id^=box]")
.mouseenter(function() {
TweenMax.to(this,0.3, {opacity:0.5} )
}).mouseleave(function() {
TweenMax.to(this,0.3, {opacity:1})
});
它将将事件绑定到id以box
开头的所有元素。
https://stackoverflow.com/questions/22792511
复制相似问题