2010-03-11 150 views
3

好吧我有6个按钮,即时尝试有一个jQuery的侦听器,当你悬停在6个按钮之一,它改变了类。即时通讯使用一个循环做到这一点,我的继承人代码:jquery循环悬停按钮

$(document).ready(function() { 
for($i=1;$i<7;$i++) { 
     $('#button'+i).hover(function() { 
     $(this).addClass('hovering'); 
     }, function() { 
     $(this).removeClass('normal'); 
     }); 
} 
}); 

每个按钮都有“buttonx”(即x是一个数字)

帮助的ID?

+0

这将有助于查看您的HTML。有几种方法可以达到您想要的效果,但根据您的情况,可能会有一个非常清晰和简洁的方法。 – 2010-03-11 18:47:44

+0

你必须是perl/php程序员。你不需要在变量前加'$':) – ryeguy 2010-03-11 18:52:31

回答

1

您不应该需要使用循环。只需使用id上的startsWith选择器属性即可。此外,您可能想要更改应用/删除类的方式,以确保没有课程同时具有正常和悬停。

$('[id^=button]').hover(function() { 
    $('[id^=button]').removeClass('hovering'); 
    $(this).addClass('hovering').removeClass('normal'); 
}, 
function() { 
    $(this).removeClass('hovering').addClass('normal'); 
}); 
+0

确定感谢guyys – 2010-03-11 18:48:20

2

您不需要遍历一堆生成的ID。你可以简单地给他们每个人的类“正常”和:

$("button.normal").hover(function() { 
    $(this).addClass("hovering"); 
}, function() { 
    $(this).removeClass("hovering"); 
}); 

“button.normal”将返回所有按钮的集合与“正常”类,所以没有必要为一个循环,悬停事件将应用于集合中的每个元素。

+0

请注意,他可能没有使用'button'标签..他的代码使用'button 'id。 – 2010-03-11 18:59:39

1

请注意,karim79的答案是一个好方法。

在你的代码中,你声明循环计数器为'$ i',但试图引用'我'。它应该是$('#button'+ $ i)