2012-11-13 1 views
0

add() 메소드에서 get() 메소드를 사용하여 가져온 항목을 가져 와서 jcarousel 객체에 추가 할 수있는 항목을 클릭 할 수있게하려고합니다. 과 같이, 그것에 클릭 이벤트 처리기를 추가 :jCarousel의 get() 메소드가 IE9에서 실패했습니다

for(n = 0; n < response.link_colors.length; n++) { 
    item = carousel.add(n + 1, '<div style="background-color: ' + response.link_colors[n] + '; width: 75px; height: 75px;">&nbsp;</div>'); 
    makeClickable(item, response.link_colors[n], 'linkcolor'); 
} 

function makeClickable(item, selection, setting) { 
    item.attr("sel", selection); 

    item.click(function() { 
     eval("selections." + setting + " = $(this).attr('sel');"); 
     if(setting == 'layout') { 
      $('#template_preview').show(); 
      $('#extracted_selections').show(); 
     } 
     reloadFrame(); 
    }); 
} 

이 작동 IE9는 반환되는 항목이 객체가 아닌, 그래서 ATTR() 메소드가 있음을 알려줍니다하지만 등 크롬, 파이어 폭스, 예상대로 유효하지 않습니다.

jCarousel 코드를 보면, 나는 get 메소드이를 참조하십시오

get: function(i) { 
     return $('>.jcarousel-item-' + i, this.list); 
    }, 

은 매우 간단 같습니다. 적절한 클래스 이름 (예 : jcarousel-item-1)이있는 LI 요소가 있음을 확인했지만 jcarousel 생성자에서 생성 한 this.list 개체도 참조하며 IE9에서는 유효하지 않은 것으로 보입니다.

어떻게 해결할 수 있습니까?

감사합니다.

답변

0

추가 조사를 마친 후, 내가 수행하고 있다고 생각한 것처럼 var item;을 사용하여 함수 외부에서 항목 변수를 선언하지 않는다는 것을 깨달았습니다. IE의 모든 버전에서 수정되었습니다. 그래서, 이것이 당신 모두에게 교훈이되게하십시오 (그러나, 특히) - 여러분의 변수, 아이들을 선언하십시오! 그리고 오발틴을 마셔 라.