간단한 배열을 반복하고 배열 값을 기반으로 요소를 찾은 다음 각 요소에 click 이벤트를 추가하려고합니다. 어떤 이유로 (범위와 관련이 있을지도 모름) 모든 이벤트는 배열의 끝에 있다고 생각합니다.배열을 루프 처리하고 jQuery 클릭 이벤트를 추가하는 방법은 무엇입니까?
예 HTML :
<!-- "Sectors" -->
<div class="a">a</div>
<div class="b">b</div>
<div class="c">c</div>
해당 자바 스크립트 : 어떤 사업부를 클릭하면
var sectorArray = ["a", "b", "c"];
// Loop over sector letters
for (var s in sectorArray) {
var sector = sectorArray[s];
console.log("Adding click event for sector: " + sector);
$('div.' + sector).on("click", function(e){
console.log("Clicked sector: " + sector);
});
}
, 내가 부문 "C"에 해요 메시지가 표시됩니다. 여기에 jsfiddle가 있습니다 : http://jsfiddle.net/luken/Pd66m/
for 루프 내부의 모든 것을 자체적으로 분리 된 기능으로 만들어서 문제를 해결할 수있었습니다. 다른 해결책이 있습니다 ... 그러나 나는 알아 내고 싶습니다. 왜 이것이 위의 방식으로 작동하지 않을까요? 감사.
정말'배열에 for..in' 사용하지 말아야합니다 . –
^왜 @JamesMontagne가 아닌가요? – Luke
@ 루크 반복 순서는 보장되지 않습니다. 상속 된 속성도 열거됩니다. 나쁜 주주. – Alex