Javascript 是否只有最后一项绑定了单击/悬停事件?

Javascript 是否只有最后一项绑定了单击/悬停事件?,javascript,jquery,Javascript,Jquery,我是Javascript和HTML5的新手。我正在遍历一组名为requests的对象,并为它们创建div。我正在尝试这样做,如果有任何项目悬停在样式类更改上,如果单击它们,我将稍后调用一个函数,但现在只需要一个警报。只有最后一项得到它 我看过其他人有过类似的问题,但我看不出我错在哪里 for (i= 0; i<reqs.length; i++) { var requestID = "request"+i; // Build t

我是Javascript和HTML5的新手。我正在遍历一组名为requests的对象,并为它们创建div。我正在尝试这样做,如果有任何项目悬停在样式类更改上,如果单击它们,我将稍后调用一个函数,但现在只需要一个警报。只有最后一项得到它

我看过其他人有过类似的问题,但我看不出我错在哪里

        for (i= 0; i<reqs.length; i++) {
            var requestID = "request"+i;
            // Build the DIV for each request
            element.innerHTML += "<div id="+requestID+" class=request><img class=requestImage src=images/"
                +reqs[i].image+" alt=Face />&nbsp;&nbsp;"+reqs[i].name+"</div>";

            var requestElement = $('#'+requestID);
            requestElement.hover(
                function() {
                    $(this).removeClass().addClass("requestHover");
                    },
                function() {
                $(this).removeClass().addClass("request");
                }
            );
            requestElement.click(
            // if the request is clicked, then alert me - testing
                function() {
                    alert('Handler for .click() called.');
                }
            );

        }// end for

for(i=0;i您可以在for循环之后分配事件侦听器,这或许可以解决您的问题:

for (...) {
}

$('div.request').hover( ... );
我会这样写的

    for (i= 0; i<reqs.length; i++) {
        var requestID = "request"+i;
        // Build the DIV for each request
        element.innerHTML += "<div id="+requestID+" class=request><img class=requestImage src=images/"
            +reqs[i].image+" alt=Face />&nbsp;&nbsp;"+reqs[i].name+"</div>";
    }// end for
    var requestElement = $(".request");
    requestElement.hover(
        function() {
            $(this).removeClass().addClass("requestHover");
         },
         function() {
            $(this).removeClass().addClass("request");
         }
    );
    requestElement.click(
      // if the request is clicked, then alert me - testing
      function() {
         alert('Handler for .click() called.');
      }
    );

for(i=0;iYou可能被一个闭包相关的bug咬了一口。请为这段代码提供更多的作用域(任何封闭函数?)。为了更好地理解,我尝试使用#request+i获取ID字段,这在语法上是否有什么错误。