日期:2014-05-16  浏览次数:20331 次

关于jquery function传值问题

$(document).ready(function(){
var tr=document.getElementsByClassName("divavatar");
for (var i=1;i<=tr.length;i++){
$("#div"+i).mouseover(function(i){
alert(i);
});

有3个div,ID分别为div1,div2,div3,这三个的class都为"divavatar"
有3个img,分别为img1,img2,img3
我想给3个div添加mouseover事件,如上代码,
我要怎么才能在这里面
$("#divavatar"+i).mouseover(function(i){
alert(i);
});
把i给传进去,试了好久,一直没成功,求帮助,谢谢。
------解决方案--------------------
你可以通过字符串截取的方法来获得i,
$("#divavatar"+i).mouseover(function(e){
   var that=$(this).attr('id');
   var i=that.substr(that.length-2,1);
   alert(i);
});
------解决方案--------------------
$(document).ready(function(){
    var tr=document.getElementsByClassName("divavatar");
    for (var i=1;i<=tr.length;i++){
(function(s){
        $("#div"+i).mouseover(function(){
            alert(s);
        });
})(i)

传入的参数应该是event对象 
------解决方案--------------------
我一直这么用

$("div[id^='div']").mouseover(
    function()
    {
           var id = $(this).attr("id").replace(/div/,"");
     }
);

------解决方案--------------------
引用:
Quote: 引用:

你可以通过字符串截取的方法来获得i,
$("#divavatar"+i).mouseover(function(e){
   var that=$(this).attr('id');
   var i=that.substr(that.length-2,1);
   alert(i);
});


只能这样了吗?你的方法是可行的,谢谢。我迷惑在里面那个function不能直接传前面的值进去?


mouseover 这个方法里面的参数,不是你想传什么就传什么的,你要参照 API文档
------解决方案--------------------
for (var i=1;i<=tr.length;i++){
        $("#div"+i).mouseover(function(i){
            alert(i);
        });
}
i的作用域已经包含在mouseover里面了,在事件里面是可以直接使用,并不需要传值。
...mouseover(function(i){
  这个i在这里是Event对象,并不是for中的i了
}